@nexus-cross/connect-kit-react 1.3.4-beta.8 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-4TWKECXR.js +144 -0
- package/dist/client.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +7 -7
- package/dist/chunk-UA7JZCCB.js +0 -144
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
var mt="1.3.4";var wt="__nexusCrossAppLauncherRuntime";function ro(){if(typeof window>"u")return null;let e=window;return e[wt]??(e[wt]={mode:"dapp-ui"}),e[wt]}function so(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 n=e.connectKitVersion??mt;console.info(`[CROSSx App Launcher] connect-kit-react v${n} \uCD08\uAE30\uD654 \uC644\uB8CC (dapp-ui v${mt}, \uC0AC\uC6A9 \uBAA8\uB4DC: connect-kit)`)}else console.info(`[CROSSx App Launcher] dapp-ui v${mt} \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 Zt(){let e=ro();e&&(e.mode="connect-kit-react",e.connectKitVersion=mt,so(e))}import{useCallback as Be,useEffect as le,useMemo as Le,useRef as He,useState as Ve}from"react";import{WagmiProvider as po,useAccount as fo,useChainId as go,useConnect as bo,useDisconnect as yo,useSwitchChain as ho}from"wagmi";import{QueryClient as wo,QueryClientProvider as Co}from"@tanstack/react-query";import{clearWalletSessionStorage as on,onOpenOtherWallets as ko,pickInitialState as To,resolveCurrentWallet as Io}from"@nexus-cross/connect-kit-wagmi";import{resolveThemeMode as xo}from"@nexus-cross/connect-kit-core";import{buildDesignSystemCss as So}from"@nexus-cross/crossx-design-system";import{OnRampProvider as vo}from"@nexus-cross/onramp/react";import{KycProvider as Po}from"@nexus-cross/kyc/react";import{createContext as io,useContext as ao}from"react";var Et=io(null);function We(){let e=ao(Et);if(!e)throw new Error("useCrossConnectKit must be used within <CrossConnectKitProvider>");return e}import{createContext as co,useContext as Jt}from"react";var Ct=co(null);function lo(){let e=Jt(Ct);if(!e)throw new Error("useCrossConnectKitTheme must be used within <CrossConnectKitProvider>");return e}function pt(){return Jt(Ct)}import{useCallback as uo,useMemo as en}from"react";import{WalletConnectModal as tn}from"@nexus-cross/dapp-ui";import{jsx as nn}from"react/jsx-runtime";var mo=new Set(["cross_wallet","cross_extension","metamask","binance"]);function _t({open:e,onOpenChange:t}){let{connect:n,availableWallets:i,oauth:o,extraWallets:c,walletAllowlist:p,kitConfig:b}=We(),r=pt()?.mode??"dark",C=en(()=>{let g=p?new Set(p):null,w={};for(let P of i){if(!mo.has(P.walletId)||g&&!g.has(P.walletId))continue;let v=P.walletId;w[v]=()=>{n(P.walletId)}}for(let[P,v]of Object.entries(c))v&&(g&&!g.has(P)||(w[P]=v));return w},[i,n,c,p]),T=en(()=>{if(o)return{apple:()=>{o.signIn("apple")},google:()=>{o.signIn("google")}}},[o]),I=uo(g=>t(g),[t]);return nn(tn,{wallets:C,socialProviders:T,termsUrl:b.legal?.termsUrl,privacyUrl:b.legal?.privacyUrl,theme:r,open:e,onOpenChange:I,children:nn(tn.Content,{})})}import{jsx as ot,jsxs as an}from"react/jsx-runtime";var Ao=new wo,Ot="crossx-kit:last-wallet-intent",Ro=15e3;function rn(e,t){return Promise.race([e.then(()=>{},()=>{}),new Promise(n=>setTimeout(n,t))])}function Bo(e){let t=[],n=e,i=0;for(;n&&i<5;){let o=n;typeof o.message=="string"&&t.push(o.message),n=o.cause,i+=1}return t.some(o=>/external wallet connection/i.test(o))}function Eo(){if(typeof window>"u")return null;try{return window.localStorage.getItem(Ot)??null}catch{return null}}function sn(e){if(!(typeof window>"u"))try{e?window.localStorage.setItem(Ot,e):window.localStorage.removeItem(Ot)}catch{}}function _o(e,t){if(typeof window>"u")return t;try{let n=window.localStorage.getItem(e);return n==="cross"||n==="reown"?n:t}catch{return t}}function Oo(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,t)}catch{}}function No({children:e,config:t,activeProvider:n,onRequestProviderSwap:i,pendingConnectWalletId:o,clearPending:c,themeMode:p,themeTokens:b,extraWallets:f,walletAllowlist:r}){let[C,T]=Ve(!1),[I,g]=Ve(()=>Eo()),[w,P]=Ve(null),{address:v,isConnected:x,isConnecting:N,isReconnecting:U,connector:B}=fo(),{connectors:V,connectAsync:j}=bo(),{disconnectAsync:M}=yo(),{kitConfig:F,connectorRegistry:G,crossProvider:ve,reownProvider:O}=t,E=n==="cross"?ve:O,W=Le(()=>!x||!B?null:Io(G,B.id,I),[x,B,G,I]),he=Le(()=>G.entries.filter(u=>u.type!=="embedded"),[G]),Ye=He(v);Ye.current=v;let X=F.embeddedProjectId?.trim()||F.crossProjectId?.trim(),ie=!!F.onRampEnabled&&!!X,we=Le(()=>!ie||!X?null:{projectId:X,walletState:{getAddress:()=>Ye.current}},[ie,X]),Ne=He(B);Ne.current=B;let Ce=F.embeddedProjectId?.trim()||F.crossProjectId?.trim(),Ue=!!F.kycEnabled&&!!Ce,fe=Le(()=>!Ue||!Ce?null:{projectId:Ce,getAccessToken:async()=>{let u=Ne.current;if(!(!u||typeof u.getProvider!="function"))try{return(await(await u.getProvider())?.sdk?.getUserInfo?.())?.data?.accessToken||void 0}catch{return}}},[Ue,Ce]);le(()=>ko(()=>T(!0)),[]),le(()=>{if(!C||typeof document>"u")return;let u=setTimeout(()=>{document.querySelectorAll("#__crossx-confirm-overlay").forEach(l=>l.remove())},50);return()=>clearTimeout(u)},[C]);let xe=He(x),ae=He(x);xe.current=x;let Ze=He(!1);le(()=>{console.debug("[crossx-kit] state",{activeProvider:n,isConnected:x,isConnecting:N,isReconnecting:U,activeConnectorId:B?.id,currentWallet:W,lastIntent:I})},[n,x,N,U,B?.id,W,I]),le(()=>{x&&!ae.current&&E?.closeModal?.({kitConfig:F}),ae.current=x},[x,E,F]),le(()=>{x&&P(null)},[x]);let Je=go(),{switchChainAsync:Ke}=ho(),$e=He(null);le(()=>{if(!F.enforceDefaultNetworkOnConnect)return;let u=F.defaultNetwork?.id;if(!u)return;if(!x||!v||!B){$e.current=null;return}let l=`${B.id}:${v}`;$e.current!==l&&($e.current=l,Je!==u&&Ke({chainId:u}).catch(()=>{}))},[F.enforceDefaultNetworkOnConnect,F.defaultNetwork,x,v,B,Je,Ke]);let ce=Be(u=>V.find(l=>l.id===u),[V]);le(()=>{let u=G.getEntry("cross_embedded");if(!u)return;let l=ce(u.connectorId);if(!l)return;let k=!1;return(async()=>{try{let h=await l.getProvider();if(k)return;h?.sdk?.applyTheme?.(p,b??void 0)}catch(h){console.debug("[crossx-kit] applyTheme skipped:",h)}})(),()=>{k=!0}},[G,ce,p,b]);let Pe=Be(u=>{g(u),sn(u)},[]),q=Be(()=>{g(null),sn(null),P(null)},[]);le(()=>{if(!E?.subscribeModalState)return;let u=!1;return E.subscribeModalState({kitConfig:F},l=>{if(Ze.current=l,l){u=!0;return}u&&(u=!1,setTimeout(()=>{xe.current||(async()=>{try{await M()}catch{}q()})()},250))})},[E,F,M,q]),le(()=>{if(!w||x||typeof window>"u"||w==="cross_embedded")return;let u=typeof document<"u"&&!document.hasFocus(),l=null,k=()=>{u=!0},h=()=>{u&&(l&&clearTimeout(l),l=setTimeout(()=>{xe.current||Ze.current||(async()=>{try{await M()}catch{}q()})()},1e3))};return window.addEventListener("blur",k),window.addEventListener("focus",h),()=>{window.removeEventListener("blur",k),window.removeEventListener("focus",h),l&&clearTimeout(l)}},[w,x,M,q]);let ge=Be(async u=>{console.debug("[crossx-kit] runConnect enter",{walletId:u,activeProvider:n,isConnected:x,activeConnectorId:B?.id});let l=G.getEntry(u);if(!l){if((u==="metamask"||u==="binance")&&!O){console.error(`[crossx-kit] "${u}" 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: "${u}"`);return}if(P(u),l.providerKind!==n){console.debug("[crossx-kit] provider swap needed",{from:n,to:l.providerKind,walletId:u}),Pe(u);try{await M()}catch{}await new Promise(h=>setTimeout(h,0)),i(l.providerKind,u);return}if(Pe(u),E?.beforeConnect)try{let h=await E.beforeConnect({kitConfig:F,themeMode:p},u);if(console.debug("[crossx-kit] beforeConnect result",{walletId:u,result:h}),h==="handled")return}catch(h){console.warn('[crossx-kit] adapter.beforeConnect threw for "%s":',u,h)}let k=ce(l.connectorId);if(console.debug("[crossx-kit] findConnector",{lookupId:l.connectorId,found:k?.id,availableIds:V.map(h=>h.id)}),!k){console.error(`[crossx-kit] Connector "${l.connectorId}" not found on provider "${l.providerKind}". Available: ${V.map(h=>h.id).join(", ")}`),q();return}try{console.debug("[crossx-kit] connectAsync start",{connectorId:k.id});let h=await j({connector:k});console.debug("[crossx-kit] connectAsync resolved",{accountsLen:h.accounts.length,chainId:h.chainId});return}catch(h){if(!Bo(h)){console.error('[crossx-kit] connectAsync error for "%s":',u,h);try{await M()}catch{}}if(!l.fallbackConnectorId){q();return}}if(l.fallbackConnectorId){let h=ce(l.fallbackConnectorId);if(h)try{await j({connector:h})}catch(L){console.error('[crossx-kit] Fallback connect failed for "%s":',u,L);try{await M()}catch{}q()}else q()}},[G,V,ce,j,M,Pe,q,E,n,F,i,p]);le(()=>{if(!o)return;let u=o;c(),ge(u)},[o,n]);let et=Be(async()=>{T(!0)},[]),s=Be(async()=>{try{await M()}catch(u){console.error("[crossx-kit] wagmi disconnect error:",u)}if(E?.teardown)try{await E.teardown({kitConfig:F})}catch(u){console.error("[crossx-kit] adapter teardown error:",u)}on(),q()},[M,E,F,q]),a=Be(async()=>{await rn(M(),3e3);try{let u=G.getEntry("cross_embedded"),l=u&&ce(u.connectorId);if(l?.getProvider){let k=await Promise.race([l.getProvider(),new Promise(L=>setTimeout(L,3e3))]),h=k?.sdk?.signOut;typeof h=="function"&&await rn(h.call(k.sdk),3e3)}}catch{}on()},[G,ce,M]),d=Be(async()=>{let u=G.getEntry("cross_embedded");if(!u)return null;let l=ce(u.connectorId);if(!l)return null;try{let k=await l.getProvider(),h=k?.sdk;if(!h?.selectWallet)return null;let L=await h.selectWallet(h.currentAddress??void 0);return L?.address&&k.notifyAccountsChanged&&k.notifyAccountsChanged([L.address]),L}catch{return null}},[G,ce]),m=Le(()=>{let u=t.oauth;return u?{signIn:async l=>{P("cross_embedded");try{await u.signIn(l)}catch(k){throw P(null),k}}}:null},[t.oauth]),y=He(!1);le(()=>{if(n!=="cross"||x||N||U||w!=null||y.current)return;let u=G.getEntry("cross_embedded");if(!u)return;let l=ce(u.connectorId);if(!l)return;y.current=!0;let k=!1;return(async()=>{try{let h=await l.isAuthorized?.();if(k||!h)return;await j({connector:l})}catch{}})(),()=>{k=!0}},[n,x,N,U,w,G,ce,j]),le(()=>{if(w!=="cross_embedded"||x||typeof window>"u")return;let u=!document.hasFocus(),l=()=>{u=!0};window.addEventListener("blur",l);let k=setTimeout(()=>{xe.current||u||(console.warn("[crossx-kit] embedded sign-in stalled before the OAuth popup opened \u2014 clearing the stale session so a retry starts clean"),q(),a())},Ro);return()=>{window.removeEventListener("blur",l),clearTimeout(k)}},[w,x,q,a]);let A=w!=null&&!x,R=Le(()=>({kitConfig:F,connectorRegistry:G,availableWallets:he,connect:ge,connectWallet:et,disconnect:s,selectWallet:d,currentWallet:W,lastIntent:I,isConnecting:A,connectingWalletId:w,openOtherWallets:()=>T(!0),closeOtherWallets:()=>T(!1),otherWalletsOpen:C,oauth:m,extraWallets:f,walletAllowlist:r,onRampEnabled:ie}),[F,G,he,ge,et,s,d,W,I,A,w,C,m,f,r,ie]),_=an(Et.Provider,{value:R,children:[e,ot(_t,{open:C,onOpenChange:T})]});return fe&&(_=ot(Po,{config:fe,children:_})),we&&(_=ot(vo,{config:we,children:_})),_}var Fo=[/Connection interrupted while trying to subscribe/i,/No matching key\. subscription:/i,/Proposal expired/i];function Wo(e){let t=e?.message;return typeof t!="string"?!1:Fo.some(n=>n.test(t))}var Lo={};function Do(e){return e&&{...e,connections:new Map,current:null}}function Mo({children:e,config:t,initialState:n,extraWallets:i=Lo,walletAllowlist:o}){let[c,p]=Ve(()=>_o(t.activeProviderStorageKey,t.defaultProvider)),[b,f]=Ve(null),r=He(!1),{kitConfig:C}=t,[T,I]=Ve(null),[g,w]=Ve(null),[P,v]=Ve(0),x=Le(()=>xo(C.theme,C.autoDetectTheme),[C.theme,C.autoDetectTheme,P]),N=T??x,U=g??C.themeTokens;le(()=>{if(!C.autoDetectTheme||T||typeof window>"u"||!window.matchMedia)return;let O=window.matchMedia("(prefers-color-scheme: dark)"),E=()=>v(W=>W+1);try{return O.addEventListener("change",E),()=>O.removeEventListener("change",E)}catch{return O.addListener(E),()=>O.removeListener(E)}},[C.autoDetectTheme,T]),le(()=>{if(typeof document>"u")return;let O=document.documentElement,E=O.getAttribute("data-ds-theme"),W=O.getAttribute("data-theme");return O.setAttribute("data-ds-theme",N),W||O.setAttribute("data-theme",N),()=>{E==null?O.removeAttribute("data-ds-theme"):O.setAttribute("data-ds-theme",E),W==null&&O.removeAttribute("data-theme")}},[N]);let B=Le(()=>So(t.designSystem),[t.designSystem]),V=Le(()=>({mode:N,tokens:U,setThemeMode:O=>I(O),setThemeTokens:O=>w(O)}),[N,U]);le(()=>{if(typeof window>"u")return;let O=E=>{Wo(E.reason)&&E.preventDefault()};return window.addEventListener("unhandledrejection",O),()=>window.removeEventListener("unhandledrejection",O)},[]);let j=Be((O,E)=>{r.current||(r.current=!0,f(E),p(O),Oo(t.activeProviderStorageKey,O),queueMicrotask(()=>{r.current=!1}))},[t.activeProviderStorageKey]),M=Be(()=>f(null),[]),F=c==="cross"?t.crossWagmiConfig:t.reownWagmiConfig,G=Do(To(n,c));if(!F){if(!(c==="cross"?t.reownWagmiConfig:t.crossWagmiConfig))throw new Error("[crossx-kit] createCrossxConfig returned no wagmi Config for either side");let E=c==="cross"?"reown":"cross";queueMicrotask(()=>p(E))}let ve=F??(c==="cross"?t.reownWagmiConfig:t.crossWagmiConfig);return an(Ct.Provider,{value:V,children:[ot("style",{"data-crossx-design-system":"",children:B}),ot(po,{config:ve,initialState:G,children:ot(Co,{client:Ao,children:ot(No,{config:t,activeProvider:c,onRequestProviderSwap:j,pendingConnectWalletId:b,clearPending:M,themeMode:N,themeTokens:U,extraWallets:i,walletAllowlist:o??t.kitConfig.wallets??null,children:e})})},c)]})}import{useCallback as ze,useEffect as qr,useMemo as yt}from"react";import{useQueryClient as Hr}from"@tanstack/react-query";import{useAccount as Vr,useChainId as jr,useConfig as Qr,useSendTransaction as zr,useSwitchChain as Xr}from"wagmi";import{getPublicClient as Ut,readContracts as On}from"wagmi/actions";import{WalletInfo as Kt,ConnectorId as Xe,resolveEnvironment as Yr}from"@nexus-cross/dapp-ui";import{useOptionalOnRamp as Zr,useOptionalOnRampEligibility as Jr}from"@nexus-cross/onramp/react";import{APPLE_ICON as Vt,BINANCE_ICON as Wn,CROSSX_ICON as Ht,EXTENSION_ICON as es,GOOGLE_ICON as Ln,METAMASK_ICON as Dn}from"@nexus-cross/connect-kit-wagmi";import{useCallback as te,useMemo as Te,useRef as Go}from"react";import{useQueries as ln,useQuery as je}from"@tanstack/react-query";import{encodeFunctionData as ft,formatUnits as vt,parseSignature as Uo,parseUnits as Ko}from"viem";import{getChainId as Nt,getPublicClient as xn,readContract as Se,signTypedData as $o,switchChain as un,waitForTransactionReceipt as qo,writeContract as mn}from"wagmi/actions";import{useConfig as Ho}from"wagmi";async function kt(e,t,n){if(!(!n||t===void 0))try{if(e.getChainId()===t)return;await e.switchChain(t)}catch{}}var dt=10000n;function cn(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 Tt(e,t){let n=cn(t);return n>=dt?0n:e*(dt-n)/dt}function dn(e,t){let n=cn(t);return(e*(dt+n)+(dt-1n))/dt}function Vo(e){return e!=="bridge"}var Ge="0x0000000000000000000000000000000000000000",Ie=100,ut=18,jo=180000n,Qo=250000n,Sn=new Set([56,97]),zo=130n,Xo=100n,Yo={dev:"https://stg-contents.crosstoken.io/frontend/game-token/json/hidden-path.json",stage:"https://stg-contents.crosstoken.io/frontend/game-token/json/hidden-path.json",production:"https://contents.crosstoken.io/frontend/game-token/json/hidden-path.json"},Zo={dev:"dev",stage:"stg",production:"prod"};function Jo(e,t){let n=e?.[Zo[t]]?.hiddenPairs;if(!Array.isArray(n))return null;let i=n.filter(o=>!!o&&typeof o=="object"&&typeof o.fromKey=="string"&&typeof o.toKey=="string");return i.length>0?i:null}var er={dev:"https://stg-contents.crosstoken.io/frontend/common/app-launcher/contracts.json",stage:"https://stg-contents.crosstoken.io/frontend/common/app-launcher/contracts.json",production:"https://contents.crosstoken.io/frontend/common/app-launcher/contracts.json"},tr=["BSC_CROSS","W_CROSS","NATIVE_CROSS","USDTX","CROSSD","USDTB","SWAP_BRIDGE_ROUTER"],nr={BSC_CROSS:Ge,W_CROSS:Ge,NATIVE_CROSS:Ge,USDTX:Ge,CROSSD:Ge,USDTB:Ge,SWAP_BRIDGE_ROUTER:Ge},or=/^0x[0-9a-fA-F]{40}$/;function rr(e,t){let n=typeof e=="string"?e:e?.[t];return typeof n=="string"&&or.test(n)?n:null}function sr(e,t){if(!e?.bridge)return null;let n=e.envToNetwork?.[t]??(t==="production"?"mainnet":"testnet"),i={};for(let o of tr){let c=rr(e.bridge[o],n);if(!c)return null;i[o]=c}return i}var ir={dev:{bridgeApi:"https://stg-bridge-api.crosstoken.io/bridge",walletApi:"https://stg-wallet-server.crosstoken.io/api",chainIds:{cross:612044,bsc:97}},stage:{bridgeApi:"https://stg-bridge-api.crosstoken.io/bridge",walletApi:"https://stg-wallet-server.crosstoken.io/api",chainIds:{cross:612044,bsc:97}},production:{bridgeApi:"https://bridge-api.crosstoken.io/bridge",walletApi:"https://wallet-server.crosstoken.io/api",chainIds:{cross:612055,bsc:56}}},rt=[{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"}]}],Ft=[{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"}]}],pn=[{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"}]}],fn=[{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"}]}],ar=[{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"}]}],De=[{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:[]}],cr=[{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 vn(e){let t="";try{t=await e.text()}catch{}if(t){try{let n=JSON.parse(t),i=typeof n.data=="string"&&n.data||typeof n.message=="string"&&n.message||"";if(i)return`${i} (status ${e.status})`}catch{}return`${t.slice(0,300)} (status ${e.status})`}return`status ${e.status}`}async function Ee(e,t){let n=await fetch(e,{cache:"no-store",signal:t});if(!n.ok)throw new Error(`CrossD bridge adapter request failed: ${await vn(n)}`);let i=await n.json();if(i&&typeof i=="object"&&"code"in i&&typeof i.code=="number"&&i.code!==200)throw new Error(i.message||`CrossD bridge adapter API error: ${i.code}`);return i&&typeof i=="object"&&"data"in i?i.data:i}async function gn(e,t,n){let i=await fetch(e,{method:"POST",cache:"no-store",signal:n,headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(!i.ok)throw new Error(`CrossD bridge adapter request failed: ${await vn(i)}`);let o=await i.json();if(o&&typeof o=="object"&&"code"in o&&typeof o.code=="number"&&o.code!==200)throw new Error(o.message||`CrossD bridge adapter API error: ${o.code}`);return o&&typeof o=="object"&&"data"in o?o.data:o}function dr(e){return new Promise(t=>setTimeout(t,e))}async function lr(e,t,{attempts:n=60,intervalMs:i=2e3}={}){for(let o=0;o<n;o+=1){try{let c=await Ee(`${e}/permit-hash/${t}`);if(Dt(c))return c}catch{}await dr(i)}return null}function oe(e,t){return`${e}-${t.toLowerCase()}`}function ue(e){return oe(e.chainId,e.address)}function _e(e){return e==="swap"||e==="deposit-swap"||e==="swap-withdraw"}function ur(e){let t=e instanceof Error?e.message:typeof e=="string"?e:"",n=t.toLowerCase();return n.includes("quoteexactinputsingle")||n.includes("quoteexactoutputsingle")||n.includes("getamountswapbridgeout")||n.includes("getamountswapbridgein")||n.includes("execution reverted")?"Amount is too large for this route.":t.split(`
|
|
2
|
+
`)[0]?.trim()||"Failed to quote bridge."}function bn(e){return e===56||e===97?"BSC":e===612044||e===612055?"CROSS":`Chain ${e}`}function ne(e,t){return t?t.toLowerCase()===e.contracts.NATIVE_CROSS.toLowerCase()?e.contracts.W_CROSS:t:Ge}function st(e){let t=vt(e,ut);return t.includes(".")?t.replace(/\.?0+$/,""):t}function bt(e){return Ko(e||"0",ut)}function pe(e){try{return bt(e||"0")}catch{return 0n}}function Qe(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 Wt(e){let t=vt(e,9);return(t.includes(".")?t.replace(/\.?0+$/,""):t)||"0"}function It(e){return e==="bridge"?jo:Qo}function yn(e,t){if(!e||!t)return"0";let n=e*e;if(n===0n)return"0";let i=t*t,o=i>n?i-n:n-i;if(o===0n)return"0";let c=(o*100000000n+n/2n)/n;if(c>=100000000n)return"100";let p=c/1000000n,b=(c%1000000n).toString().padStart(6,"0").replace(/0+$/,"");return b?`${p}.${b}`:`${p}`}function mr(e){if(!e||Number(e)===0)return"0%";let[t,n=""]=e.split("."),i=n.length>4?n.slice(0,4):n;return i?`${t}.${i}%`:`${t}%`}async function hn(e,t,n,i,o,c=!1){let p=xn(e,{chainId:t}),b=n;try{let r=await p?.estimateContractGas?.({account:o.account,address:o.address,abi:o.abi,functionName:o.functionName,args:o.args,value:o.value});typeof r=="bigint"&&r>0n&&(b=i?r*zo/Xo:r)}catch{}let f={gas:b};if(Sn.has(t))try{let r=await p?.getGasPrice?.();typeof r=="bigint"&&r>0n&&(f.gasPrice=r)}catch{}else if(c)try{let r=await p?.estimateFeesPerGas?.();typeof r?.maxFeePerGas=="bigint"&&(f.maxFeePerGas=r.maxFeePerGas),typeof r?.maxPriorityFeePerGas=="bigint"&&(f.maxPriorityFeePerGas=r.maxPriorityFeePerGas)}catch{}return f}function gt(){return BigInt(Math.floor(Date.now()/1e3)+1800)}var pr={100:"0.01%",500:"0.05%",3e3:"0.3%",1e4:"1%"};function fr(e){return pr[e]??`${e/1e4}%`}function gr(e,t){let n=Number(e||"0");return!Number.isFinite(n)||n<=0?"0":(n*t/1e6).toFixed(8).replace(/\.?0+$/,"")}function wn(e){return st(e)}function Cn(e,t){let n=Number(t??"0");return!Number.isFinite(n)||n<=0?0n:e*BigInt(Math.floor(n))/1000n}function xt(e,t){if(!e)return!1;let n=e.toLowerCase();return t.some(i=>i.toLowerCase()===n)}function br(e,t,n){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(o=>xt(t,o.from)&&xt(n,o.to)||xt(t,o.to)&&xt(n,o.from))}function yr(e){if(_e(e.type))return null;if(e.type==="swap-bridge"){let t=e.steps.find(n=>n.type==="bridge");return t?{from:t.fromChain,to:t.toChain,token:t.fromToken}:null}if(e.type==="bridge-swap"){let t=e.steps.find(n=>n.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 hr({input:e,path:t,config:n}){if(!n||_e(t.type))return"";let i=Qe(n.minimumValue),o=Qe(n.gasFee??n.gas_fee),c=t.type==="swap-bridge"?i+o*12n/10n:i;return c<=0n?"":e.fromAmount&&pe(e.fromAmount)<c&&t.type!=="swap"?`Minimum ${wn(c)}`:t.type==="swap-bridge"&&e.toAmount&&pe(e.toAmount)<c?`Available ${wn(c)} or more.`:""}function wr({input:e,path:t,config:n}){if(!n||t.type!=="bridge"&&t.type!=="bridge-swap")return"";let i=Qe(n.gasFee??n.gas_fee);if(i<=0n||!e.fromAmount)return"";let o=pe(e.fromToken.balance||"0"),c=pe(e.fromAmount);return o-i<c?`Insufficient network fee(${e.fromToken.symbol})`:""}function Cr(e,t){let n=new Set;return e?.list?.forEach(i=>{let o=i.localChain??i.local_chain;o&&Object.entries(i.pairs||{}).forEach(([c,p])=>{p.forEach(b=>{b.localToken&&n.add(oe(o,b.localToken)),b.remoteToken&&n.add(oe(Number(c),b.remoteToken))})})}),Object.entries(t?.swapPools||t?.swap_pools||{}).forEach(([i,o])=>{o.forEach(c=>{c.token0&&n.add(oe(Number(i),c.token0)),c.token1&&n.add(oe(Number(i),c.token1))})}),n}function kr(e,t){return!e||!t?null:oe(e,t)}function Tr({envConfig:e,bridgePairList:t,swapPools:n,tokenInfo:i,tokenStats:o}){let c=Cr(t,n),p=new Map;o?.forEach(f=>{let r=kr(Number(f.chainId??f.chain_id),f.address);r&&p.set(r,f)});let b={};return c.forEach(f=>{let[r,C]=f.split("-"),T=Number(r),I=i?.find(w=>Number(w.chainId??w.chain_id)===T&&w.address?.toLowerCase()===C);if(!I?.symbol||!I.name)return;let g=p.get(f);b[f]={key:f,chainId:T,address:C,symbol:I.symbol,name:I.name,decimals:I.decimals||ut,image:I.image||I.icon_url,price:g?.price?Number(g.price):void 0,isNativeToken:C.toLowerCase()===e.contracts.NATIVE_CROSS.toLowerCase()}}),b}function Pn(e,t){return t?.list?.find(n=>(n.localChain??n.local_chain)===e)?.bridge||""}function An(e,t,n){let[i,o]=e.split("-"),[c,p]=t.split("-"),b=Number(i),f=Number(c);for(let r of n?.list||[]){if((r.localChain??r.local_chain)!==b)continue;let C=r.pairs?.[c];if(C){for(let T of C)if(T.localToken?.toLowerCase()===o&&T.remoteToken?.toLowerCase()===p)return{type:"bridge",fromChain:b,fromToken:o,toChain:f,toToken:p,bridgeAddress:Pn(b,n)}}}return null}function Rn(e,t,n,i){let o,c=1/0;for(let p of e||[]){let b=i(p.token0),f=i(p.token1);if(b===t&&f===n||f===t&&b===n){let r=p.fee??Ie;r<c&&(o=p,c=r)}}return o?{fee:c,poolAddress:o.poolAddress||o.pool_address||""}:null}function Bn(e,t,n,i){let[o,c]=e.split("-"),[p,b]=t.split("-");if(o!==p)return null;let f=Number(o),r=(n?.swapPools||n?.swap_pools)?.[o];if(!r)return null;let C=i.contracts.W_CROSS.toLowerCase(),T=i.contracts.NATIVE_CROSS.toLowerCase(),g=Rn(r,c,b,P=>P?.toLowerCase()===C?T:P?.toLowerCase());if(!g)return null;let w="swap";return f===i.chainIds.cross&&(c===T&&(w="deposit-swap"),b===T&&(w="swap-withdraw")),{pathType:w,step:{type:"swap",chain:f,fromToken:c,toToken:b,fee:g.fee,poolAddress:g.poolAddress}}}function Ir(e,t,n,i){let[o,c]=e.split("-"),[p]=t.split("-");if(o===p)return null;let b=(n?.swapPools||n?.swap_pools)?.[o]||[],f=r=>r?.toLowerCase();for(let r of b){let C=f(r.token0),T=f(r.token1),I=C===c?T:T===c?C:null;if(!I)continue;let g=An(oe(Number(o),I),t,i);if(!g)continue;let w=Rn(b,c,I,f);return[{type:"swap",chain:Number(o),fromToken:c,toToken:I,fee:w?.fee??Ie,poolAddress:w?.poolAddress??""},g]}return null}function xr(e,t,n,i,o){let[c,p]=e.split("-"),[b]=t.split("-");if(c===b)return null;for(let f of n?.list||[])if((f.localChain??f.local_chain)===Number(c))for(let r of f.pairs?.[b]||[]){if(r.localToken?.toLowerCase()!==p)continue;let C=r.remoteToken?.toLowerCase();if(!C)continue;let T=Bn(oe(Number(b),C),t,i,o);if(T)return[{type:"bridge",fromChain:Number(c),fromToken:p,toChain:Number(b),toToken:C,bridgeAddress:Pn(Number(c),n)},T.step]}return null}function Sr({envConfig:e,bridgePairList:t,swapPools:n,enrichedTokens:i}){return(o,c)=>{let p=i[o],b=i[c];if(!p||!b||o===c)return null;let f=An(o,c,t);if(f)return{type:"bridge",steps:[f],from:p,to:b};let r=Bn(o,c,n,e);if(r)return{type:r.pathType,steps:[r.step],from:p,to:b};let C=Ir(o,c,n,t);if(C)return{type:"swap-bridge",steps:C,from:p,to:b};let T=xr(o,c,t,n,e);return T?{type:"bridge-swap",steps:T,from:p,to:b}:null}}function kn(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 vr(e){return e.length<=10?e:`${e.slice(0,6)}...${e.slice(-4)}`}function Pr(e){return e.includes(".")?e.replace(/\.?0+$/,"")||"0":e}function Ar(e,t){let n=e.startsWith("-"),i=n?e.slice(1):e,[o,c=""]=i.split("."),p=c.slice(0,t).replace(/0+$/,""),b=p?`${o}.${p}`:o;return n?`-${b}`:b}function Rr(e){let t=e.startsWith("-"),n=t?e.slice(1):e,[i,o]=n.split("."),c=i.replace(/\B(?=(\d{3})+(?!\d))/g,","),p=o?`${c}.${o}`:c;return t?`-${p}`:p}function Lt(e){if(e==null||e==="")return"0";let t=String(e),n=Number(t);return!Number.isFinite(n)||n===0?"0":Rr(Ar(t,4))}function Tn(e,t){if(e==null||e==="")return"0";try{return Pr(vt(BigInt(String(e)),t.decimals))}catch{return"0"}}function Dt(e){return!!(e&&/^0x[0-9a-fA-F]+$/.test(e))}function Br(e){return e?new Date(e*1e3).toISOString():new Date().toISOString()}function Er(e,t){return t.toLowerCase()===e.contracts.W_CROSS.toLowerCase()?e.contracts.NATIVE_CROSS:t}function _r(e,t){let n=vr(t);return{name:n,symbol:n,chainId:e,address:t,decimals:ut,balance:"0"}}function In({envConfig:e,tokenByBridgeKey:t,chainId:n,address:i}){if(!i)return null;let o=Er(e,i);return t.get(oe(n,o))||t.get(oe(n,i))||_r(n,o)}function St(e){return e?.toLowerCase()||""}function Or(e){if(e.source==="swap")return"swap";let t=St(e.fromToken??e.from_token),n=St(e.toToken??e.to_token),i=St(e.swapTokenIn??e.swap_token_in),o=St(e.swapTokenOut??e.swap_token_out);return n&&i&&n===i?"bridge-swap":t&&o&&t===o?"swap-bridge":"bridge"}function Nr(e,t){let n=e.status??0,i=e.extracallSuccess??e.extracall_success??!1;return t==="bridge-swap"&&n===1&&!i?"failed":n===1?"success":"pending"}function Fr({envConfig:e,item:t,tokenByBridgeKey:n}){let i=Number(t.fromChainID??t.from_chain_id??0),o=Number(t.toChainID??t.to_chain_id??0);if(!i||!o)return null;let c=Or(t),p=t.swapTokenIn??t.swap_token_in,b=t.swapTokenOut??t.swap_token_out,f=t.swapAmountIn??t.swap_amount_in,r=t.swapAmountOut??t.swap_amount_out,C=t.fromToken??t.from_token,T=t.toToken??t.to_token,I=t.value,g=t.value;c==="swap"?(C=p,T=b,I=f,g=r):c==="swap-bridge"?(C=p,I=f,g=t.value):c==="bridge-swap"&&(T=b,I=f,g=r);let w=In({envConfig:e,tokenByBridgeKey:n,chainId:i,address:C}),P=In({envConfig:e,tokenByBridgeKey:n,chainId:o,address:T}),v=t.initiatedTxHash??t.initiated_tx_hash;return!w||!P||!Dt(v)?null:{id:`${v}-${t.index??""}`,timestamp:Br(t.initiatedTime??t.initiated_time),txHash:v,fromToken:w,toToken:P,fromAmount:Tn(I,w),toAmount:Tn(g,P),summary:{pathType:c},status:Nr(t,c)}}function Wr(e){let t=new Map;return e.flat().forEach(n=>{let i=Number(n.chainId??n.chain_id),o=n.address?.toLowerCase();if(!i||!o)return;let c=n.quantity?.numeric??n.balance??"0",p=n.quantity?.decimals??n.decimals??ut;try{t.set(oe(i,o),vt(BigInt(c||"0"),p))}catch{t.set(oe(i,o),"0")}}),t}function Me(e,t="first"){let n=e.steps.filter(i=>i.type==="swap");return t==="last"?n[n.length-1]:n[0]}function Lr(e,t){let n=(e?.swapPools||e?.swap_pools)?.[String(t.chainIds.cross)];if(!n?.length)return"";let i=t.contracts.CROSSD.toLowerCase(),o=t.contracts.USDTX.toLowerCase(),c=n.find(p=>{let b=p.token0?.toLowerCase(),f=p.token1?.toLowerCase();return b===i&&f===o||b===o&&f===i});return c?.poolAddress||c?.pool_address||""}function Dr(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 Mr(e){if(e===void 0)return;let t=10n**BigInt(ut),n=e>=50000n*t?"normal":e>10000n*t?"low":"rebalancing",i=Number(e>0n?e*100n/(100000n*t):0n);return{label:"Available Liquidity",status:n,percentage:Math.min(i,100)}}function lt(e,t,n,i){let o=[e.from,e.to].find(c=>c.chainId===t&&c.address.toLowerCase()===n.toLowerCase())??i?.[oe(t,n)];return{symbol:o?.symbol||n.slice(0,6),iconUrl:o?.image}}function Gr(e,t){let n=[];for(let o of e.steps)o.type==="swap"?(n.push({chain:o.chain,address:o.fromToken}),n.push({chain:o.chain,address:o.toToken})):(n.push({chain:o.fromChain,address:o.fromToken}),n.push({chain:o.toChain,address:o.toToken}));let i=n.filter((o,c)=>c===0||!(o.chain===n[c-1].chain&&o.address.toLowerCase()===n[c-1].address.toLowerCase()));return i.length===0?[{symbol:e.from.symbol,iconUrl:e.from.image},{symbol:e.to.symbol,iconUrl:e.to.image}]:i.map(o=>lt(e,o.chain,o.address,t))}function Ur({input:e,path:t,amountData:n,gasInfo:i,liquidity:o,enrichedTokens:c,priceImpact:p}){let b=e.fromAmount||"0",f=e.toAmount||"0",r=Me(t),C=t.steps.find(U=>U.type==="bridge"),T=t.type!=="bridge",I=!_e(t.type),g=r?gr(b,r.fee):"0",w=Number(b)>0||Number(f)>0,P=r?lt(t,r.chain,r.fromToken,c):{symbol:e.fromToken.symbol,iconUrl:e.fromToken.iconUrl},v=r?lt(t,r.chain,r.toToken,c):{symbol:e.toToken.symbol,iconUrl:e.toToken.iconUrl},x=C?lt(t,C.fromChain,C.fromToken,c):void 0,N=(U,B,V)=>w?B&&B>0n?{label:U,value:st(B),tone:"default",valueToken:V}:{label:U,value:"Free",tone:"accent"}:{label:U,value:"0"};return{pathType:t.type,priceImpact:p,liquidity:o,bridgeInfo:I&&C?[{label:"Route",value:`${bn(C.fromChain)} \u2192 ${bn(C.toChain)}`},N("Validator Fee",n?.exFee,x),N("Network Fee",n?.networkFee,x)]:void 0,swapInfo:T&&r?[{label:"Route",value:"",routeTokens:[lt(t,r.chain,r.fromToken,c),lt(t,r.chain,r.toToken,c)]},{label:"Price Impact",value:mr(p)},{label:"In Amount",value:Lt(b),valueToken:P},{label:r&&_e(t.type)?`Swap Fee (${fr(r.fee??Ie)})`:"Swap Fee",value:Lt(g),valueToken:P},{label:"Out Amount",value:Lt(f),valueToken:v}]:void 0,txFee:[...i?.gasPrice?[{label:"Gas Price",value:`${i.gasPrice} Gwei`}]:[{label:"Priority Fee Per Gas",value:`${i?.priorityFeePerGas||"0"} Gwei`},{label:"Max Fee Per Gas",value:`${i?.maxFeePerGas||"0"} Gwei`}],{label:"Gas Limit",value:i?.gasLimit||"0"}],txFeeInfo:i?{estTxFee:i.estTxFee,isDelegateFee:i.isDelegateFee,tokenIconUrl:i.gasCurrencyIconUrl,tokenSymbol:i.gasCurrencySymbol}:{estTxFee:"0",isDelegateFee:!1}}}function Mt({env:e,walletAddress:t,enabled:n=!0,restoreChainAfterSwitch:i=!0}){let o=Ho(),c=Go(new Map),b=je({queryKey:["crossd-bridge-adapter",e,"remote-contracts"],queryFn:async({signal:s})=>{let a=sr(await Ee(er[e],s),e);if(!a)throw new Error("CrossD bridge adapter: invalid contracts.json");return a},enabled:n,staleTime:5*6e4}).data??null,f=n&&!!b,r=Te(()=>({...ir[e],contracts:b??nr}),[e,b]),C=je({queryKey:["crossd-bridge-adapter",e,"pairs"],queryFn:({signal:s})=>Ee(`${r.bridgeApi}/pairs`,s),enabled:f,staleTime:3e4}),T=je({queryKey:["crossd-bridge-adapter",e,"swap-pools"],queryFn:({signal:s})=>Ee(`${r.bridgeApi}/swap-pools`,s),enabled:f,staleTime:3e4}),I=Te(()=>Lr(T.data,r),[r,T.data]),g=je({queryKey:["crossd-bridge-adapter",e,"available-liquidity",I],queryFn:async()=>await Se(o,{address:r.contracts.USDTX,abi:Ft,functionName:"balanceOf",args:[I],chainId:r.chainIds.cross}),enabled:f&&!!I,staleTime:3e4}),w=je({queryKey:["crossd-bridge-adapter",e,"token-info"],queryFn:({signal:s})=>Ee(`${r.walletApi}/v1/public/token/info`,s),enabled:f,staleTime:3e4}),P=je({queryKey:["crossd-bridge-adapter",e,"token-stats"],queryFn:({signal:s})=>Ee(`${r.walletApi}/v1/public/token/stats`,s),enabled:f,staleTime:3e4}),v=ln({queries:[r.chainIds.cross,r.chainIds.bsc].map(s=>({queryKey:["crossd-bridge-adapter",e,"balance",t,s],queryFn:({signal:a})=>{let d=new URLSearchParams({networkId:`eip155:${s}`,account:t||""});return Ee(`${r.walletApi}/v1/public/token/balance?${d}`,a)},enabled:f&&!!t,staleTime:0,refetchInterval:f&&t?5e3:!1}))}),x=ln({queries:[r.chainIds.cross,r.chainIds.bsc].map(s=>({queryKey:["crossd-bridge-adapter",e,"gas-suggestion",s],queryFn:async({signal:a})=>{try{let y=await xn(o,{chainId:s})?.estimateFeesPerGas?.();if(y?.maxFeePerGas||y?.gasPrice)return{fast:{maxFee:y.maxFeePerGas?.toString()||y.gasPrice?.toString(),maxPriorityFee:y.maxPriorityFeePerGas?.toString()||"0"}}}catch{}let d=new URLSearchParams({chain_id:String(s),without_gas_limit:"false"});return Ee(`${r.walletApi}/v1/public/transaction/gas-suggestion/dynamic?${d}`,a)},enabled:f,staleTime:1e4,retry:1}))}),N=je({queryKey:["crossd-bridge-adapter",e,"hidden-pairs"],queryFn:async({signal:s})=>Jo(await Ee(Yo[e],s),e),enabled:f,staleTime:5*6e4,retry:1}),U=Te(()=>N.data??[],[N.data]),B=Te(()=>Tr({envConfig:r,bridgePairList:C.data,swapPools:T.data,tokenInfo:w.data,tokenStats:P.data}),[C.data,r,T.data,w.data,P.data]),V=Te(()=>Sr({envConfig:r,bridgePairList:C.data,swapPools:T.data,enrichedTokens:B}),[C.data,B,r,T.data]),j=Te(()=>Wr(v.map(s=>s.data).filter(s=>Array.isArray(s))),[v]),M=Te(()=>{let s=new Map;return Object.values(B).forEach(a=>{let d=kn(a,j);s.set(a.key,d)}),s},[j,B]),F=Te(()=>{let s=new Map,a=M.get(oe(r.chainIds.cross,r.contracts.NATIVE_CROSS));a&&s.set(r.chainIds.cross,{symbol:a.symbol,iconUrl:a.iconUrl});let d=w.data?.find(m=>Number(m.chainId??m.chain_id)===r.chainIds.bsc&&(m.symbol??"").toUpperCase()==="BNB");return d&&s.set(r.chainIds.bsc,{symbol:d.symbol??"BNB",iconUrl:d.image??d.icon_url}),s},[r,M,w.data]),G=je({queryKey:["crossd-bridge-adapter",e,"history",t],queryFn:({signal:s})=>gn(`${r.bridgeApi}/history`,{owner:t,page:1,size:20,sort:"desc",status:"all"},s),enabled:f&&!!t,staleTime:0,refetchInterval:f&&t?5e3:!1}),ve=Te(()=>(G.data?.histories||[]).map(s=>Fr({envConfig:r,item:s,tokenByBridgeKey:M})).filter(s=>!!s),[G.data?.histories,r,M]),O=Te(()=>Mr(g.data),[g.data]),E=x[0]?.data,W=x[1]?.data,he=Te(()=>{let s=new Map;return E&&s.set(r.chainIds.cross,E),W&&s.set(r.chainIds.bsc,W),s},[W,E,r.chainIds.bsc,r.chainIds.cross]),Ye=te((s,a,d)=>{let m=he.get(s.from.chainId)?.fast,y=a?d?.gasLimit??It(s.type):0n,A=d?.gasPrice&&d.gasPrice>0n?d.gasPrice:0n,R=d?.maxFeePerGas&&d.maxFeePerGas>0n?d.maxFeePerGas:0n,S=d?.maxPriorityFeePerGas&&d.maxPriorityFeePerGas>0n?d.maxPriorityFeePerGas:0n,_=Qe(m?.maxFee??m?.max_fee),u=Qe(m?.maxPriorityFee??m?.max_priority_fee),l=R>0n?R:_>0n?_:A,k=S>0n?S:u>0n?u:l,h=A>0n?A:l,L=Sn.has(s.from.chainId)&&h>0n,J=y*(L?h:l),re=M.get(oe(s.from.chainId,r.contracts.NATIVE_CROSS)),H=s.type!=="swap-bridge",K=F.get(s.from.chainId);return{estTxFee:a?st(J):"0",priorityFeePerGas:a&&!L?Wt(k):"0",maxFeePerGas:a&&!L?Wt(l):"0",gasLimit:a?y.toString():"0",gasPrice:a&&L?Wt(h):void 0,isDelegateFee:s.type==="swap-bridge"?!1:br(r,s.from.address,s.to.address),tokenIconUrl:H?re?.iconUrl:void 0,tokenSymbol:H?re?.symbol:void 0,gasCurrencyIconUrl:K?.iconUrl,gasCurrencySymbol:K?.symbol}},[r,he,F,M]),X=te(async s=>{let a=yr(s);if(!a)return null;let d=`${e}:${a.from}:${a.to}:${a.token.toLowerCase()}`,m=c.current.get(d);if(m)return m;let y=(async()=>{let A=new URLSearchParams({from:String(a.from),to:String(a.to),token:a.token});try{return(await Ee(`${r.bridgeApi}/token-config?${A}`)).config??null}catch{return null}})();return c.current.set(d,y),y},[e,r.bridgeApi]),ie=Te(()=>{let s=Object.values(B).map(d=>kn(d,j)),a=oe(r.chainIds.cross,r.contracts.CROSSD);return s.sort((d,m)=>{let y=ue(d).toLowerCase()===a.toLowerCase(),A=ue(m).toLowerCase()===a.toLowerCase();return y!==A?y?-1:1:ue(d).localeCompare(ue(m))})},[j,B,r]),we=te(s=>{let a=ue(s),d=a.toLowerCase(),m=[];Object.keys(B).forEach(R=>{let S=R.toLowerCase();if(d===S||U.some(l=>l.fromKey===d&&l.toKey===S))return;let _=V(a,R);if(!_)return;let u=M.get(R);u&&m.push({token:u,path:_})});let y=oe(r.chainIds.cross,r.contracts.CROSSD),A=oe(r.chainIds.cross,r.contracts.NATIVE_CROSS);return m.sort((R,S)=>{if(d===y.toLowerCase()){let h=ue(R.token).toLowerCase()===A.toLowerCase(),L=ue(S.token).toLowerCase()===A.toLowerCase();if(h!==L)return h?-1:1}let _=_e(R.path.type),u=_e(S.path.type);if(_!==u)return _?-1:1;let l=R.token.chainId===s.chainId,k=S.token.chainId===s.chainId;return l!==k?l?-1:1:ue(R.token).localeCompare(ue(S.token))}),m.map(R=>R.token)},[B,r,V,U,M]),Ne=te(async s=>await Se(o,{address:r.contracts.SWAP_BRIDGE_ROUTER,abi:rt,functionName:"quoter",chainId:s}),[r.contracts.SWAP_BRIDGE_ROUTER,o]),Ce=te(async s=>{Nt(o)!==s&&await un(o,{chainId:s})},[o]),Ue=te(s=>kt({getChainId:()=>Nt(o),switchChain:a=>un(o,{chainId:a})},s,i),[i,o]),fe=te(async s=>await Se(o,{address:r.contracts.SWAP_BRIDGE_ROUTER,abi:rt,functionName:"swapRouter",chainId:s}),[r.contracts.SWAP_BRIDGE_ROUTER,o]),xe=te(async({path:s,step:a,amount:d,source:m})=>{let y=await Ne(a.chain),A=a.poolAddress?Se(o,{address:a.poolAddress,abi:ar,functionName:"slot0",chainId:a.chain}).then(_=>_?.[0]).catch(()=>{}):Promise.resolve(void 0);if(m==="from"){let _=await Se(o,{address:y,abi:fn,functionName:"quoteExactInputSingle",args:[{tokenIn:ne(r,a.fromToken),tokenOut:ne(r,a.toToken),amountIn:bt(d),fee:a.fee??Ie,sqrtPriceLimitX96:0n}],chainId:a.chain}),u=yn(await A,_[1]);return{amount:st(_[0]),path:s,priceImpact:u}}let R=await Se(o,{address:y,abi:fn,functionName:"quoteExactOutputSingle",args:[{tokenIn:ne(r,a.fromToken),tokenOut:ne(r,a.toToken),amount:bt(d),fee:a.fee??Ie,sqrtPriceLimitX96:0n}],chainId:a.chain}),S=yn(await A,R[1]);return{amount:st(R[0]),path:s,priceImpact:S}},[r,Ne,o]),ae=te(async(s,a)=>{if(!t)throw new Error("Wallet is not connected.");let d=It(a.type);if(_e(a.type)){let l=Me(a,"first");if(!l)throw new Error("Swap route is not available.");let k=pe(s.fromAmount),h=pe(s.toAmount);if(k<=0n)throw new Error("Bridge amount is empty.");if(h<=0n)throw new Error("Bridge quote is not ready.");let L=await fe(l.chain),Y=Tt(h,s.slippage),J=a.type==="swap-withdraw"?Ge:t,re={tokenIn:ne(r,l.fromToken),tokenOut:ne(r,l.toToken),fee:l.fee??Ie,recipient:J,deadline:gt(),amountIn:k,amountOutMinimum:Y,sqrtPriceLimitX96:0n};if(a.type==="swap-withdraw"){let H=ft({abi:De,functionName:"exactInputSingle",args:[re]}),K=ft({abi:De,functionName:"unwrapWETH9",args:[Y,t]});return{address:L,abi:De,functionName:"multicall",args:[[H,K]],chainId:l.chain,fallbackGasLimit:d}}if(a.type==="deposit-swap"){let H=ft({abi:De,functionName:"exactInputSingle",args:[re]}),K=ft({abi:De,functionName:"refundETH",args:[]});return{address:L,abi:De,functionName:"multicall",args:[[H,K]],value:k,chainId:l.chain,fallbackGasLimit:d}}return{address:L,abi:De,functionName:"exactInputSingle",args:[re],chainId:l.chain,fallbackGasLimit:d}}if(a.type==="swap-bridge"){let l=Me(a,"first");if(!l)throw new Error("Swap bridge route is not available.");let k=pe(s.fromAmount),h=pe(s.toAmount);if(k<=0n)throw new Error("Bridge amount is empty.");if(h<=0n)throw new Error("Bridge quote is not ready.");let L=r.contracts.SWAP_BRIDGE_ROUTER,Y=gt(),J={toChainID:BigInt(a.to.chainId),recipient:t,extraData:"0x"},re={tokenIn:ne(r,a.from.address),tokenOut:ne(r,l.toToken),fee:l.fee??Ie,sqrtPriceLimitX96:0n,bridgeParams:J};if(s.lastChangedBy==="to"){let K={...re,amountOut:h,amountInMaximum:dn(k,s.slippage)};return{address:L,abi:rt,functionName:"swapBridgeExactOutputSingle",args:[K,Y],value:a.from.isNativeToken?K.amountInMaximum:void 0,chainId:a.from.chainId,fallbackGasLimit:d}}let H={...re,amountIn:k,amountOutMinimum:Tt(h,s.slippage)};return{address:L,abi:rt,functionName:"swapBridgeExactInputSingle",args:[H,Y],value:a.from.isNativeToken?k:void 0,chainId:a.from.chainId,fallbackGasLimit:d}}let m=a.steps.find(l=>l.type==="bridge");if(!m?.bridgeAddress)throw new Error("Bridge route is not available.");let y=pe(s.fromAmount);if(y<=0n)throw new Error("Bridge amount is empty.");let A=await X(a),R=Qe(A?.gasFee??A?.gas_fee),S=Cn(y,A?.exFeeRate??A?.ex_fee_rate),_="0x";if(a.type==="bridge-swap"){let l=Me(a,"last");if(!l)throw new Error("Bridge swap route is not available.");let k=pe(s.toAmount);if(k<=0n)throw new Error("Bridge quote is not ready.");let h=await fe(a.to.chainId),L=Tt(k,s.slippage),Y=ft({abi:De,functionName:"exactInputSingle",args:[{tokenIn:ne(r,l.fromToken),tokenOut:ne(r,l.toToken),fee:l.fee??Ie,recipient:t,deadline:gt(),amountIn:y,amountOutMinimum:L,sqrtPriceLimitX96:0n}]});_=`${h}${Y.slice(2)}`}let u=[BigInt(a.to.chainId),a.from.address,t,y,R,S,_];return{address:m.bridgeAddress,abi:cr,functionName:"bridgeToken",args:u,value:a.from.isNativeToken?y+S+R:void 0,chainId:a.from.chainId,fallbackGasLimit:d}},[r,X,fe,t]),Ze=te(async(s,a)=>{if(a.type==="bridge"||a.type==="bridge-swap")return ae(s,a);if(!t)throw new Error("Wallet is not connected.");let d=pe(s.fromAmount);if(d<=0n)throw new Error("Bridge amount is empty.");if(a.type==="swap-bridge"){let R=Me(a,"first");if(!R)throw new Error("Swap bridge route is not available.");let S=r.contracts.SWAP_BRIDGE_ROUTER,_={tokenIn:ne(r,a.from.address),tokenOut:ne(r,R.toToken),fee:R.fee??Ie,sqrtPriceLimitX96:0n,bridgeParams:{toChainID:BigInt(a.to.chainId),recipient:t,extraData:"0x"},amountIn:d,amountOutMinimum:0n};return{address:S,abi:rt,functionName:"swapBridgeExactInputSingle",args:[_,gt()],value:a.from.isNativeToken?d:void 0,chainId:a.from.chainId,fallbackGasLimit:It(a.type)}}let m=Me(a,"first");if(!m)throw new Error("Swap route is not available.");let y=await fe(m.chain),A={tokenIn:ne(r,m.fromToken),tokenOut:ne(r,m.toToken),fee:m.fee??Ie,recipient:t,deadline:gt(),amountIn:d,amountOutMinimum:0n,sqrtPriceLimitX96:0n};return{address:y,abi:De,functionName:"exactInputSingle",args:[A],value:a.from.isNativeToken?d:void 0,chainId:m.chain,fallbackGasLimit:It(a.type)}},[ae,r,fe,t]),Je=te(async(s,a)=>{if(!t)return null;try{let d=await Ze(s,a),m=_e(a.type)||a.type==="swap-bridge",y=await hn(o,d.chainId,d.fallbackGasLimit,m,{account:t,address:d.address,abi:d.abi,functionName:d.functionName,args:d.args,value:d.value},!0);return{gasLimit:y.gas,gasPrice:y.gasPrice,maxFeePerGas:y.maxFeePerGas,maxPriorityFeePerGas:y.maxPriorityFeePerGas}}catch{return null}},[Ze,o,t]),Ke=te(async s=>{let a=ue(s.fromToken),d=ue(s.toToken),m=V(a,d);if(!m)return{error:"Route is not available."};let y=s.lastChangedBy==="to"?s.toAmount:s.fromAmount,A=!!y&&Number(y)>0,R=Dr(m,r)?O:void 0,S=async(Y,J,re)=>{let H=A?await Je(Y,m):null,K=Ye(m,A,H);return Ur({input:Y,path:m,gasInfo:K,amountData:J,liquidity:R,enrichedTokens:B,priceImpact:re})};if(!y||Number(y)<=0)return{fromAmount:s.fromAmount,toAmount:s.toAmount,summary:await S(s)};let _=await X(m),u=Qe(_?.gasFee??_?.gas_fee),l=m.type==="bridge"||m.type==="bridge-swap"?{networkFee:u}:void 0,k=m.type==="bridge"?s.lastChangedBy==="to"?{...s,fromAmount:s.toAmount}:{...s,toAmount:s.fromAmount}:s,h=hr({input:k,path:m,config:_});if(h)return{fromAmount:k.fromAmount,toAmount:k.toAmount,summary:await S(k,l),error:h};let L=wr({input:k,path:m,config:_});if(L)return{fromAmount:k.fromAmount,toAmount:k.toAmount,summary:await S(k,l),error:L};if(m.type==="bridge")return{fromAmount:k.fromAmount,toAmount:k.toAmount,summary:await S(k,l)};try{if(m.type==="swap-bridge"){let H=Me(m,"first"),K=r.contracts.SWAP_BRIDGE_ROUTER;if(!H)return{error:"Swap bridge route is not ready."};let at=Re=>xe({path:m,step:H,amount:Re,source:"from"}).then(Fe=>Fe.priceImpact).catch(()=>{});if(s.lastChangedBy==="from"){let Re=await Se(o,{address:K,abi:rt,functionName:"getAmountSwapBridgeOut",args:[BigInt(m.to.chainId),ne(r,m.from.address),ne(r,H.toToken),H.fee??Ie,bt(s.fromAmount)],chainId:m.from.chainId}),Fe=st(Re[1]),Pt={...s,toAmount:Fe};return{toAmount:Fe,summary:await S(Pt,{networkFee:Re[3],exFee:Re[4]},await at(s.fromAmount))}}let Ae=await Se(o,{address:K,abi:rt,functionName:"getAmountSwapBridgeIn",args:[BigInt(m.to.chainId),ne(r,m.from.address),ne(r,H.toToken),H.fee??Ie,bt(s.toAmount)],chainId:m.from.chainId}),qe=st(Ae[1]),tt={...s,fromAmount:qe};return{fromAmount:qe,summary:await S(tt,{networkFee:Ae[3],exFee:Ae[4]},await at(qe))}}let Y=m.type==="bridge-swap"?Me(m,"last"):Me(m,"first");if(!Y)return{error:"Swap route is not available."};let J=await xe({path:m,step:Y,amount:y,source:s.lastChangedBy});if(s.lastChangedBy==="from"){let H={...s,toAmount:J.amount};return{toAmount:J.amount,summary:await S(H,l,J.priceImpact)}}let re={...s,fromAmount:J.amount};return{fromAmount:J.amount,summary:await S(re,l,J.priceImpact)}}catch(Y){return{fromAmount:s.fromAmount,toAmount:s.toAmount,summary:await S(s,l),error:ur(Y)}}},[O,Ye,B,r,Je,V,X,xe,o]),$e=te(async s=>{if(s.from.isNativeToken)return null;if(s.type==="swap"||s.type==="deposit-swap"||s.type==="swap-withdraw")return fe(s.from.chainId);if(s.type==="swap-bridge")return r.contracts.SWAP_BRIDGE_ROUTER;let a=s.steps.find(d=>d.type==="bridge");return a?.bridgeAddress?a.bridgeAddress:null},[r.contracts.SWAP_BRIDGE_ROUTER,fe]),ce=te(async s=>{if(!t)throw new Error("Wallet is not connected.");let a=ue(s.fromToken),d=ue(s.toToken),m=V(a,d);if(!m)throw new Error("Route is not available.");if(!_e(m.type)&&m.type!=="swap-bridge"||m.from.isNativeToken)return null;let y=pe(s.fromAmount);if(y<=0n)return null;let A=await $e(m);return!A||await Se(o,{address:m.from.address,abi:Ft,functionName:"allowance",args:[t,A],chainId:m.from.chainId})>=y?null:{token:s.fromToken,tokenAddress:m.from.address,spenderAddress:A,amount:s.fromAmount}},[V,$e,o,t]),Pe=te(async(s,a)=>{let d=pe(a.amount||s.fromAmount);if(d<=0n)throw new Error("Approval amount is empty.");await Ce(a.token.chainId);let m=await mn(o,{address:a.tokenAddress,abi:Ft,functionName:"approve",args:[a.spenderAddress,d],chainId:a.token.chainId});await qo(o,{hash:m,chainId:a.token.chainId})},[Ce,o]),q=te(async(s,a)=>{let d=await ae(s,a);await Ce(d.chainId);let m=await hn(o,d.chainId,d.fallbackGasLimit,Vo(a.type),{account:t,address:d.address,abi:d.abi,functionName:d.functionName,args:d.args,value:d.value});return{txHash:await mn(o,{address:d.address,abi:d.abi,functionName:d.functionName,args:d.args,value:d.value,chainId:d.chainId,...m}),fromToken:s.fromToken,toToken:s.toToken,fromAmount:s.fromAmount,toAmount:s.toAmount}},[ae,Ce,o,t]),ge=te(async(s,a)=>{let d=t;if(!d)throw new Error("Wallet is not connected.");let m=a.steps.find(Fe=>Fe.type==="bridge");if(!m?.bridgeAddress)throw new Error("Bridge route is not available.");let y=a.from.address,A=a.from.chainId,R=pe(s.fromAmount);if(R<=0n)throw new Error("Bridge amount is empty.");let S=await X(a),_=Qe(S?.gasFee??S?.gas_fee),u=Cn(R,S?.exFeeRate??S?.ex_fee_rate),l=R+u+_,[k,h]=await Promise.all([Se(o,{address:y,abi:pn,functionName:"name",chainId:A}),Se(o,{address:y,abi:pn,functionName:"nonces",args:[d],chainId:A})]),L=BigInt(Math.floor(Date.now()/1e3)+300),Y=await $o(o,{domain:{name:k,version:"1",chainId:A,verifyingContract:y},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:d,spender:m.bridgeAddress,value:l,nonce:h,deadline:L}}),{r:J,s:re,v:H,yParity:K}=Uo(Y),at=H!==void 0?Number(H):K+27,Ae={exFee:u.toString(),from:A,fromToken:y,nonce:Number(h),gasFee:_.toString(),permitArgs:{account:d,deadline:L.toString(),r:J,s:re,token:y,v:at,value:l.toString()},to:d,toChainID:String(a.to.chainId),value:l.toString()},qe=await gn(`${r.bridgeApi}/permit`,Ae),tt=qe?.requestId??qe?.request_id;if(!tt)throw new Error("Bridge permit request failed.");let Re=await lr(r.bridgeApi,tt);if(!Dt(Re))throw new Error("Bridge submitted, but confirmation timed out. Check History shortly.");return{txHash:Re,fromToken:s.fromToken,toToken:s.toToken,fromAmount:s.fromAmount,toAmount:s.toAmount}},[r,X,o,t]),et=te(async s=>{let a=Nt(o),d=ue(s.fromToken),m=ue(s.toToken),y=V(d,m);if(!y)throw new Error("Route is not available.");if(!(_e(y.type)||y.type==="swap-bridge"||y.type==="bridge-swap"||y.type==="bridge"))throw new Error("This bridge route is not supported yet.");let S=y.type==="bridge"&&y.from.chainId===r.chainIds.bsc&&y.from.address.toLowerCase()===r.contracts.BSC_CROSS.toLowerCase()?await ge(s,y):await q(s,y);return await Ue(a),{...S,pathType:y.type,routeTokens:Gr(y,B)}},[B,r,V,Ue,ge,q,o]);return{bridgeTokens:ie,bridgeHistory:ve,getBridgeApproval:ce,approveBridge:Pe,getBridgeQuote:Ke,getBridgeToTokens:we,submitBridge:et,isLoading:C.isLoading||T.isLoading||w.isLoading||P.isLoading||v.some(s=>s.isLoading)}}import{useEffect as En,useRef as Kr,useState as _n}from"react";import{useAccount as $r}from"wagmi";function Gt(e){let{address:t,connector:n}=$r(),{currentWallet:i}=We(),o=e?.walletId!==void 0?e.walletId:i,c=e?.connector!==void 0?e.connector:n,p=e?.address!==void 0?e.address:t,[b,f]=_n({loginType:null,accountName:null,accounts:[],isResolved:!1}),r=Kr(new Map),[C,T]=_n(0);return En(()=>{let I=!1;if(o!=="cross_embedded")return f({loginType:null,accountName:null,accounts:[],isResolved:!0}),()=>{I=!0};if(!c)return f({loginType:null,accountName:null,accounts:[],isResolved:!1}),()=>{I=!0};f(v=>({...v,isResolved:!1}));let g=20,w=300,P=async()=>{if(typeof c.getProvider!="function")return"retry";let v;try{v=await c.getProvider()}catch{return"retry"}let x=v?.sdk;if(!x)return"giveup";try{let W=x.getRNBridgeActiveWallet?.(),he=W?.walletName?.trim();W&&he&&r.current.set(W.address.toLowerCase(),he)}catch{}let[N,U]=await Promise.all([x.getUserInfo?.().catch(()=>null)??null,x.getAddresses?.().catch(()=>null)??null]);if(I)return"done";let B=N?.loginType,V=B==="google"||B==="apple"?B:null;if(!V)return"retry";let j=p?.toLowerCase(),M=j&&Array.isArray(U)?U.find(W=>W.address.toLowerCase()===j):null,F=Array.isArray(U)?U.filter(W=>/^0x[a-fA-F0-9]{40}$/.test(W.address)).map(W=>({address:W.address.toLowerCase(),...Number.isFinite(W.index)?{index:W.index}:{},...W.name?.trim()?{name:W.name.trim()}:{}})):[],G=j?r.current.get(j)?.trim():void 0,ve=!M&&j&&/^0x[a-fA-F0-9]{40}$/.test(j)?[...F,{address:j,index:F.length,...G?{name:G}:{}}]:F,E=G||M?.name?.trim()||(typeof M?.index=="number"?`Account ${M.index+1}`:p?`${p.slice(0,6)}\u2026${p.slice(-4)}`:null);return f({loginType:V,accountName:E,accounts:ve,isResolved:!0}),"done"};return(async()=>{for(let v=0;v<g;v++){if(I)return;let x=await P();if(x==="done")return;if(x==="giveup"){I||f({loginType:null,accountName:null,accounts:[],isResolved:!0});return}await new Promise(N=>setTimeout(N,w))}I||f({loginType:null,accountName:null,accounts:[],isResolved:!0})})(),()=>{I=!0}},[o,c,p,C]),En(()=>{if(o!=="cross_embedded"||!c||typeof c.getProvider!="function")return;let I=!1,g;return(async()=>{let w;try{w=await c.getProvider()}catch{return}if(I)return;let P=w?.sdk;P?.on&&(g=P.on("addressChanged",({address:v,walletName:x})=>{let N=x?.trim();N&&(r.current.set(v.toLowerCase(),N),T(U=>U+1))}))})(),()=>{I=!0,g?.()}},[o,c]),b}import{Fragment as Fn,jsx as me,jsxs as it}from"react/jsx-runtime";var ts=[{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"}]}],ns=[{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"}]}],os={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"}},$t=10n**18n,rs={google:{name:"Google",iconUrl:Ln,connectorId:Xe.CROSSx},apple:{name:"Apple",iconUrl:Vt,connectorId:Xe.CROSSx},cross:{name:"CROSSx",iconUrl:Ht,connectorId:Xe.CROSSx},metamask:{name:"MetaMask",iconUrl:Dn,connectorId:Xe.MetaMask},binance:{name:"Binance Wallet",iconUrl:Wn,connectorId:Xe.Binance}};function ss(e){switch(e){case"cross_embedded":return Xe.CROSSx;case"metamask":return Xe.MetaMask;case"binance":return Xe.Binance;default:return}}function is(e,t){switch(e){case"cross_embedded":return t==="google"?{name:"Google",iconUrl:Ln}:t==="apple"?{name:"Apple",iconUrl:Vt}:{name:"CROSSx",iconUrl:Ht};case"cross_wallet":return{name:"CROSSx Wallet",iconUrl:Ht};case"cross_extension":return{name:"CROSSx Extension",iconUrl:es};case"metamask":return{name:"MetaMask",iconUrl:Dn};case"binance":return{name:"Binance Wallet",iconUrl:Wn};default:return null}}var as="Bridge is available only with the CROSSx 2.0 wallet.",cs="Send is available only with the CROSSx 2.0 wallet.";function ds({label:e="Connect Wallet",className:t,style:n,walletInfoStyle:i,user:o,enablePortfolio:c,portfolio:p,theme:b,accountName:f,connectorId:r,showPortfolio:C,sendAccounts:T,getTransactionReceipt:I,sendTransaction:g,estimateGas:w,onDisconnect:P,onSelectWallet:v,onBuy:x,onRampRedirectUrl:N,bridgeTokens:U,bridgeHistory:B,getBridgeQuote:V,getBridgeToTokens:j,getBridgeApproval:M,approveBridge:F,submitBridge:G,showBalance:ve=!0,env:O,...E}){let{address:W,isConnected:he,connector:Ye,chain:X}=Vr(),ie=Qr(),we=jr(),{switchChainAsync:Ne}=Xr(),{sendTransactionAsync:Ce}=zr(),{connectWallet:Ue,disconnect:fe,selectWallet:xe,currentWallet:ae,isConnecting:Ze,kitConfig:Je}=We(),Ke=Je?.restoreChainAfterSwitch!==!1,$e=pt(),ce=b??$e?.mode??"dark",Pe=yt(()=>Yr(O),[O]),q=o?.address??W,ge=o?rs[o.provider]:null,{loginType:et,accountName:s,accounts:a}=Gt({walletId:ae,connector:Ye,address:q}),d=yt(()=>ge?{name:ge.name,iconUrl:ge.iconUrl}:is(ae,et),[ge,ae,et]),m=f??o?.name??s??void 0,y=ge?ge.connectorId:ss(ae),A=r??y,R=p??C??!!c,S=Mt({env:Pe,walletAddress:q,enabled:he&&!!q&&ve,restoreChainAfterSwitch:Ke}),_=U??S.bridgeTokens,u=B??S.bridgeHistory,l=V??S.getBridgeQuote,k=j??S.getBridgeToTokens,h=M??S.getBridgeApproval,L=F??S.approveBridge,Y=G??S.submitBridge,J=ze(()=>{Ue().catch(D=>{console.error("[crossx-kit] connectWallet error:",D)})},[Ue]),re=ze(()=>{fe()},[fe]),H=P??re,K=Zr(),{eligibility:at}=Jr({network:X?String(X.id):void 0}),Ae=at?.allowed===!0,qe=yt(()=>{if(x)return x;if(!(!K||!X||!Ae))return()=>K.open({crypto:X.nativeCurrency?.symbol??"USDT",network:String(X.id),...N?{redirectUrl:N}:{}}).then(()=>{}).catch(D=>{throw console.warn("[crossx-kit] onramp open failed:",D),D})},[x,K,X,Ae,N]),tt=Hr();qr(()=>{if(K?.onStatus)return K.onStatus(()=>{tt.invalidateQueries()})},[K,tt]);let Re=yt(()=>{if(!x&&!(!K||!X)&&!Ae)return"On-ramp is not available in your region."},[x,K,X,Ae]),Fe=yt(()=>o?o.provider==="google"||o.provider==="apple":ae==="cross_embedded",[o,ae]),Pt=E.onBridgeDisabledMessage??(Fe?void 0:as),$n=E.onSendDisabledMessage??(Fe?void 0:cs),qn=o?o.provider==="google"||o.provider==="apple":ae==="cross_embedded",Hn=ze(()=>{xe().catch(D=>{console.error("[crossx-kit] selectWallet error:",D)})},[xe]),jt=v??(qn?Hn:void 0),Vn=ze(async({hash:D,chainId:Z})=>{let ee=Ut(ie,Z?{chainId:Z}:void 0);if(!ee)return null;try{return await ee.getTransactionReceipt({hash:D})}catch{return null}},[ie]),jn=ze(async D=>{let Z=we,ee=!1;D.chainId!==void 0&&D.chainId!==we&&(await Ne({chainId:D.chainId}),ee=!0);let de=D.chainId===56||D.chainId===97?{...D,type:"legacy"}:D,Q=await(g??Ce)(de);return await kt({getChainId:()=>ee?D.chainId:Z,switchChain:ye=>Ne({chainId:ye})},Z,Ke),Q},[g,Ce,we,Ne,Ke]),Qn=R||g?jn:void 0,zn=ze(async D=>{let Z=D.chainId??we,ee=Ut(ie,Z?{chainId:Z}:void 0);if(!ee)throw new Error(`publicClient for chainId ${Z??"unknown"} is not available \u2014 register the chain in createCrossxConfig({ networks }).`);let be=Z===56||Z===97,[de,ke]=await Promise.all([ee.estimateGas({account:D.from,to:D.to,value:D.value,data:D.data}),(async()=>{if(be)return{maxFeePerGas:void 0,maxPriorityFeePerGas:void 0,gasPrice:await ee.getGasPrice()};try{let Q=await ee.estimateFeesPerGas();return{maxFeePerGas:Q.maxFeePerGas,maxPriorityFeePerGas:Q.maxPriorityFeePerGas,gasPrice:void 0}}catch{return{maxFeePerGas:void 0,maxPriorityFeePerGas:void 0,gasPrice:await ee.getGasPrice()}}})()]);return{gasLimit:de,maxFeePerGas:ke.maxFeePerGas,maxPriorityFeePerGas:ke.maxPriorityFeePerGas,gasPrice:ke.gasPrice}},[ie,we]),Xn=w??zn,Yn=ze(async D=>{let Z={};if(!W||D.length===0)return Z;let ee=D.flatMap(de=>{let Q={address:de,abi:ts,chainId:we};return[{...Q,functionName:"balanceOf",args:[W]},{...Q,functionName:"totalSupply"},{...Q,functionName:"decimals"}]}),be;try{be=await On(ie,{contracts:ee,allowFailure:!0})}catch{return Z}return D.forEach((de,ke)=>{let Q=ke*3,ye=be[Q],ht=be[Q+1],ct=be[Q+2];!ye||ye.status!=="success"||(Z[de.toLowerCase()]={balance:ye.result,totalSupply:ht&&ht.status==="success"?ht.result:void 0,decimals:ct&&ct.status==="success"?Number(ct.result):void 0})}),Z},[ie,W,we]),Zn=ze(async D=>{let Z={earnedWei:0n,stakedWei:0n};if(!D)return Z;let ee=os[Pe],be={address:ee.poolAddress,abi:ns,chainId:ee.crossChainId},de;try{de=await On(ie,{allowFailure:!0,contracts:[{...be,functionName:"earned",args:[D]},{...be,functionName:"balanceOf",args:[D]},{...be,functionName:"posaActive"},{...be,functionName:"lastRewardBlock"},{...be,functionName:"totalStaked"}]})}catch{return Z}let ke=nt=>de[nt]&&de[nt].status==="success"?de[nt].result:0n,Q=ke(0),ye=ke(1);if(de[2]&&de[2].status==="success"?de[2].result:!1)return{earnedWei:Q,stakedWei:ye};let ct=ke(3),Xt=ke(4);if(Xt===0n)return{earnedWei:Q,stakedWei:ye};let At=0n;try{At=await Ut(ie,{chainId:ee.crossChainId})?.getBlockNumber?.()??0n}catch{return{earnedWei:Q,stakedWei:ye}}if(At<=ct)return{earnedWei:Q,stakedWei:ye};let Rt=0n;try{let nt=await fetch(ee.networkStatsUrl).then(Bt=>Bt.json()),Yt=nt?.data?.block_reward??nt?.block_reward;if(Yt){let[Bt,no=""]=String(Yt).split("."),oo=(no+"0".repeat(18)).slice(0,18);Rt=BigInt(Bt||"0")*$t+BigInt(oo||"0")}}catch{}if(Rt===0n)return{earnedWei:Q,stakedWei:ye};let eo=(At-ct)*Rt*$t/Xt,to=ye*eo/$t;return{earnedWei:Q+to,stakedWei:ye}},[ie,Pe]),Qt=!jt,zt=t?`cb-button ${t}`:"cb-button",Jn=t?`cb-pill ${t}`:"cb-pill";return Ze&&!he?it(Fn,{children:[me("style",{children:qt}),it("button",{type:"button",disabled:!0,className:zt,style:n,"aria-busy":"true",children:[me("span",{className:"cb-spinner","aria-hidden":"true"}),me("span",{className:"cb-button-label",children:"Connecting..."})]})]}):he&&q?it("span",{"data-crossx-wallet-info":Qt?"external":"embedded",children:[me("style",{children:qt}),Qt&&me("style",{children:us}),it(Kt,{...E,env:Pe,theme:ce,showBalance:ve,walletAddress:q,accountName:m,sendAccounts:T??a,connectorId:A,showPortfolio:R,onDisconnect:H,onSelectWallet:jt,onBuy:qe,onBuyDisabledMessage:Re,onBridgeDisabledMessage:Pt,onSendDisabledMessage:$n,sendTransaction:Qn,getTransactionReceipt:I??Vn,estimateGas:Xn,lpBalanceReader:Yn,stakingRewardsReader:Zn,bridgeTokens:_,bridgeHistory:u,getBridgeQuote:l,getBridgeToTokens:k,getBridgeApproval:h,approveBridge:L,submitBridge:Y,style:i,children:[me(Kt.Trigger,{asChild:!0,children:it("button",{type:"button",className:Jn,style:n,"aria-label":`Connected with ${d?.name??"wallet"}: ${Nn(q)}`,children:[d?.iconUrl?me("img",{src:d.iconUrl,alt:"",width:20,height:20,className:"cb-pill-icon","data-provider":d.iconUrl===Vt?"apple":void 0}):me("span",{className:"cb-pill-icon-placeholder","aria-hidden":"true"}),me("span",{className:"cb-pill-address",children:Nn(q)})]})}),me(Kt.Content,{align:"end",sideOffset:8})]})]}):it(Fn,{children:[me("style",{children:qt}),it("button",{type:"button",onClick:J,className:zt,style:n,"aria-label":typeof e=="string"?e:"Connect Wallet",children:[me(ls,{}),me("span",{className:"cb-button-label",children:e})]})]})}function ls(){return me("svg",{className:"cb-button-icon",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:me("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 us=`
|
|
3
|
+
[data-crossx-wallet-info="external"] .wi-select-wallet-btn {
|
|
4
|
+
display: none !important;
|
|
5
|
+
}
|
|
6
|
+
`;function Nn(e){return`${e.slice(0,6)}...${e.slice(-4)}`}var qt=`
|
|
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 Mn,useEffect as ms,useMemo as Gn,useState as ps}from"react";import{detectWallets as Un,DEFAULT_WALLET_REGISTRY as Kn}from"@nexus-cross/connect-kit-wagmi";import{jsx as se,jsxs as Oe}from"react/jsx-runtime";var fs=["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"],gs="Connect with one of our available wallet providers to continue.";function bs({open:e,onClose:t,onSelect:n,title:i="Connect Wallet",description:o=gs,troubleshootingTips:c=fs}){let{availableWallets:p}=We(),[b,f]=ps({});ms(()=>{if(!e)return;let g=Un(Kn),w={};for(let v of g)v.installed!==void 0&&(w[v.id]=v.installed);f(w);let P=setTimeout(()=>{let v=Un(Kn),x={};for(let N of v)N.installed!==void 0&&(x[N.id]=N.installed);f(x)},1e3);return()=>clearTimeout(P)},[e]);let r=Gn(()=>typeof navigator>"u"?!1:/Mobi|Android/i.test(navigator.userAgent),[]),C=Gn(()=>r?p.filter(g=>g.type!=="extension"):p,[p,r]),T=Mn(g=>{if(!b[g.walletId]&&g.installUrl&&g.type==="extension"){window.open(g.installUrl,"_blank");return}t(),n(g.walletId)},[t,n,b]),I=Mn((g,w)=>{g.stopPropagation(),t(),window.open(w,"_blank")},[t]);return e?se("div",{style:$.overlay,onClick:t,children:Oe("div",{style:$.modal,onClick:g=>g.stopPropagation(),children:[Oe("div",{style:$.header,children:[se("h2",{style:$.title,children:i}),se("button",{type:"button",onClick:t,style:$.closeBtn,"aria-label":"Close",children:Oe("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:$.desc,children:o}),se("div",{style:$.walletList,children:C.map(g=>{let w=b[g.walletId],P=w===!1&&g.type==="extension"&&!!g.installUrl;return Oe("div",{style:$.walletGroup,children:[Oe("button",{type:"button",onClick:()=>T(g),style:{...$.walletItem,...g.walletId==="cross_wallet"?$.walletItemAccent:{}},"aria-label":`Connect with ${g.name}`,children:[g.iconUrl?se("img",{src:g.iconUrl,alt:"",style:$.walletIcon}):se("div",{style:$.walletIconPlaceholder}),Oe("div",{style:$.walletInfo,children:[Oe("div",{style:$.walletNameRow,children:[se("span",{style:$.walletName,children:g.name}),w!==void 0&&se("span",{style:{...$.badge,...w?$.badgeInstalled:$.badgeNotInstalled},children:w?"Installed":"Not Installed"})]}),se("span",{style:$.walletDesc,children:P?"Extension not detected \u2014 click to install":g.type==="extension"?"Browser extension approval is required":g.walletId==="cross_wallet"?"App approval is required":g.walletId==="binance"?"Mobile app only \u2014 Add CROSS network first":w?"Connect with browser extension":"Scan QR code with app"})]})]}),g.guideUrl&&Oe("button",{type:"button",onClick:v=>I(v,g.guideUrl),style:$.guideBtn,children:[se("span",{"aria-hidden":"true",children:"\u26A0\uFE0F"}),g.guideLabel??"Required Settings"]})]},g.walletId)})}),Oe("div",{style:$.troubleshoot,children:[se("h3",{style:$.troubleshootTitle,children:"Wallet not detected?"}),se("ul",{style:$.troubleshootList,children:c.map(g=>Oe("li",{style:$.troubleshootItem,children:[se("span",{style:$.troubleshootDot,"aria-hidden":"true"}),se("span",{children:g})]},g))})]})]})}):null}var z={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)"},$={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:z.surfaceBg,border:`1px solid ${z.borderDefault}`,borderRadius:"20px",overflow:"hidden"},header:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"20px 24px 0"},title:{fontSize:"18px",fontWeight:700,color:z.textPrimary,margin:0},closeBtn:{background:"none",border:"none",color:z.textTertiary,cursor:"pointer",padding:"4px",borderRadius:"8px",display:"flex",alignItems:"center",justifyContent:"center"},desc:{padding:"8px 24px 16px",fontSize:"13px",color:z.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:z.surfaceDefault},walletItem:{display:"flex",alignItems:"center",gap:"14px",width:"100%",padding:"14px",background:"transparent",border:"none",color:z.textPrimary,cursor:"pointer",textAlign:"left"},walletItemAccent:{background:z.accentGradient},walletIcon:{width:"40px",height:"40px",borderRadius:"10px",flexShrink:0},walletIconPlaceholder:{width:"40px",height:"40px",borderRadius:"10px",background:z.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:z.textPrimary},badge:{fontSize:"10px",fontWeight:600,padding:"2px 7px",borderRadius:"99px",lineHeight:1},badgeInstalled:{background:z.primarySoft,color:z.primary},badgeNotInstalled:{background:"rgba(255,255,255,0.05)",color:z.textTertiary},walletDesc:{fontSize:"11px",color:z.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 ${z.warningBorder}`,background:z.warningBg,color:z.warningText,fontWeight:600,fontSize:"13px",cursor:"pointer"},troubleshoot:{margin:"0 12px 16px",background:z.surfaceDefault,borderRadius:"12px",padding:"14px 16px"},troubleshootTitle:{fontSize:"12px",fontWeight:700,color:z.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:z.textSecondary,lineHeight:1.5},troubleshootDot:{flexShrink:0,width:"4px",height:"4px",marginTop:"6px",borderRadius:"50%",background:z.textSecondary}};import{useOnRamp as Ni,useOnRampEligibility as Fi,OnRampProvider as Wi}from"@nexus-cross/onramp/react";import{useKyc as Di,useOptionalKyc as Mi,KycProvider as Gi,KycError as Ui,launchKycVerification as Ki}from"@nexus-cross/kyc/react";import{WalletInfo as qi,ConnectorId as Hi}from"@nexus-cross/dapp-ui";import{AppLauncher as ji,AppLauncherTrigger as Qi,AppLauncherContent as zi,useGlobalMenu as Xi}from"@nexus-cross/dapp-ui";import{SkillsButton as Zi}from"@nexus-cross/dapp-ui";import{OnRampError as ea}from"@nexus-cross/connect-kit-core";import{ConnectionStatus as na,formatBalance as oa,formatWei as ra}from"@nexus-cross/connect-kit-core";Zt();export{We as a,lo as b,pt as c,_t as d,Mo as e,Mt as f,Gt as g,ds as h,bs as i,Ni as j,Fi as k,Wi as l,Di as m,Mi as n,Gi as o,Ui as p,Ki as q,qi as r,Hi as s,ji as t,Qi as u,zi as v,Xi as w,Zi as x,ea as y,na as z,oa as A,ra as B};
|
package/dist/client.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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-
|
|
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-4TWKECXR.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.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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-
|
|
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-4TWKECXR.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.4
|
|
3
|
+
"version": "1.3.4",
|
|
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,12 +24,12 @@
|
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@nexus-cross/connect-kit-core": "1.3.4
|
|
28
|
-
"@nexus-cross/connect-kit-wagmi": "1.3.4
|
|
29
|
-
"@nexus-cross/crossx-design-system": "1.3.4
|
|
30
|
-
"@nexus-cross/dapp-ui": "1.3.4
|
|
31
|
-
"@nexus-cross/kyc": "1.3.4
|
|
32
|
-
"@nexus-cross/onramp": "1.3.4
|
|
27
|
+
"@nexus-cross/connect-kit-core": "1.3.4",
|
|
28
|
+
"@nexus-cross/connect-kit-wagmi": "1.3.4",
|
|
29
|
+
"@nexus-cross/crossx-design-system": "1.3.4",
|
|
30
|
+
"@nexus-cross/dapp-ui": "1.3.4",
|
|
31
|
+
"@nexus-cross/kyc": "1.3.4",
|
|
32
|
+
"@nexus-cross/onramp": "1.3.4"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@tanstack/react-query": "^5.60.0",
|
package/dist/chunk-UA7JZCCB.js
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
var at="1.3.4";var gt="__nexusCrossAppLauncherRuntime";function nr(){if(typeof window>"u")return null;let e=window;return e[gt]??(e[gt]={mode:"dapp-ui"}),e[gt]}function rr(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 n=e.connectKitVersion??at;console.info(`[CROSSx App Launcher] connect-kit-react v${n} \uCD08\uAE30\uD654 \uC644\uB8CC (dapp-ui v${at}, \uC0AC\uC6A9 \uBAA8\uB4DC: connect-kit)`)}else console.info(`[CROSSx App Launcher] dapp-ui v${at} \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=nr();e&&(e.mode="connect-kit-react",e.connectKitVersion=at,rr(e))}import{useCallback as Ae,useEffect as de,useMemo as Oe,useRef as Ge,useState as Ue}from"react";import{WagmiProvider as lr,useAccount as ur,useChainId as mr,useConnect as pr,useDisconnect as fr,useSwitchChain as gr}from"wagmi";import{QueryClient as br,QueryClientProvider as yr}from"@tanstack/react-query";import{clearWalletSessionStorage as Jt,onOpenOtherWallets as hr,pickInitialState as wr,resolveCurrentWallet as Cr}from"@nexus-cross/connect-kit-wagmi";import{resolveThemeMode as kr}from"@nexus-cross/connect-kit-core";import{buildDesignSystemCss as xr}from"@nexus-cross/crossx-design-system";import{OnRampProvider as Tr}from"@nexus-cross/onramp/react";import{KycProvider as Ir}from"@nexus-cross/kyc/react";import{createContext as or,useContext as sr}from"react";var St=or(null);function Ee(){let e=sr(St);if(!e)throw new Error("useCrossConnectKit must be used within <CrossConnectKitProvider>");return e}import{createContext as ir,useContext as jt}from"react";var bt=ir(null);function ar(){let e=jt(bt);if(!e)throw new Error("useCrossConnectKitTheme must be used within <CrossConnectKitProvider>");return e}function ct(){return jt(bt)}import{useCallback as cr,useMemo as Xt}from"react";import{WalletConnectModal as Yt}from"@nexus-cross/dapp-ui";import{jsx as Zt}from"react/jsx-runtime";var dr=new Set(["cross_wallet","cross_extension","metamask","binance"]);function vt({open:e,onOpenChange:t}){let{connect:n,availableWallets:i,oauth:o,extraWallets:r,walletAllowlist:u,kitConfig:f}=Ee(),l=ct()?.mode??"dark",C=Xt(()=>{let p=u?new Set(u):null,w={};for(let A of i){if(!dr.has(A.walletId)||p&&!p.has(A.walletId))continue;let v=A.walletId;w[v]=()=>{n(A.walletId)}}for(let[A,v]of Object.entries(r))v&&(p&&!p.has(A)||(w[A]=v));return w},[i,n,r,u]),S=Xt(()=>{if(o)return{apple:()=>{o.signIn("apple")},google:()=>{o.signIn("google")}}},[o]),x=cr(p=>t(p),[t]);return Zt(Yt,{wallets:C,socialProviders:S,termsUrl:f.legal?.termsUrl,privacyUrl:f.legal?.privacyUrl,theme:l,open:e,onOpenChange:x,children:Zt(Yt.Content,{})})}import{jsx as je,jsxs as nn}from"react/jsx-runtime";var Sr=new br,Pt="crossx-kit:last-wallet-intent",vr=15e3;function en(e,t){return Promise.race([e.then(()=>{},()=>{}),new Promise(n=>setTimeout(n,t))])}function Pr(e){let t=[],n=e,i=0;for(;n&&i<5;){let o=n;typeof o.message=="string"&&t.push(o.message),n=o.cause,i+=1}return t.some(o=>/external wallet connection/i.test(o))}function Ar(){if(typeof window>"u")return null;try{return window.localStorage.getItem(Pt)??null}catch{return null}}function tn(e){if(!(typeof window>"u"))try{e?window.localStorage.setItem(Pt,e):window.localStorage.removeItem(Pt)}catch{}}function Rr(e,t){if(typeof window>"u")return t;try{let n=window.localStorage.getItem(e);return n==="cross"||n==="reown"?n:t}catch{return t}}function Br(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,t)}catch{}}function _r({children:e,config:t,activeProvider:n,onRequestProviderSwap:i,pendingConnectWalletId:o,clearPending:r,themeMode:u,themeTokens:f,extraWallets:b,walletAllowlist:l}){let[C,S]=Ue(!1),[x,p]=Ue(()=>Ar()),[w,A]=Ue(null),{address:v,isConnected:h,isConnecting:B,isReconnecting:G,connector:D}=ur(),{connectors:re,connectAsync:j}=pr(),{disconnectAsync:V}=fr(),{kitConfig:W,connectorRegistry:U,crossProvider:he,reownProvider:F}=t,O=n==="cross"?he:F,N=Oe(()=>!h||!D?null:Cr(U,D.id,x),[h,D,U,x]),xe=Oe(()=>U.entries.filter(d=>d.type!=="embedded"),[U]),Je=Ge(v);Je.current=v;let se=W.embeddedProjectId?.trim()||W.crossProjectId?.trim(),X=!!W.onRampEnabled&&!!se,fe=Oe(()=>!X||!se?null:{projectId:se,walletState:{getAddress:()=>Je.current}},[X,se]),me=Ge(D);me.current=D;let Te=W.embeddedProjectId?.trim()||W.crossProjectId?.trim(),Se=!!W.kycEnabled&&!!Te,De=Oe(()=>!Se||!Te?null:{projectId:Te,getAccessToken:async()=>{let d=me.current;if(!(!d||typeof d.getProvider!="function"))try{return(await(await d.getProvider())?.sdk?.getUserInfo?.())?.data?.accessToken||void 0}catch{return}}},[Se,Te]);de(()=>hr(()=>S(!0)),[]),de(()=>{if(!C||typeof document>"u")return;let d=setTimeout(()=>{document.querySelectorAll("#__crossx-confirm-overlay").forEach(g=>g.remove())},50);return()=>clearTimeout(d)},[C]);let ve=Ge(h),we=Ge(h);ve.current=h;let He=Ge(!1);de(()=>{console.debug("[crossx-kit] state",{activeProvider:n,isConnected:h,isConnecting:B,isReconnecting:G,activeConnectorId:D?.id,currentWallet:N,lastIntent:x})},[n,h,B,G,D?.id,N,x]),de(()=>{h&&!we.current&&O?.closeModal?.({kitConfig:W}),we.current=h},[h,O,W]),de(()=>{h&&A(null)},[h]);let et=mr(),{switchChainAsync:We}=gr(),Le=Ge(null);de(()=>{if(!W.enforceDefaultNetworkOnConnect)return;let d=W.defaultNetwork?.id;if(!d)return;if(!h||!v||!D){Le.current=null;return}let g=`${D.id}:${v}`;Le.current!==g&&(Le.current=g,et!==d&&We({chainId:d}).catch(()=>{}))},[W.enforceDefaultNetworkOnConnect,W.defaultNetwork,h,v,D,et,We]);let ie=Ae(d=>re.find(g=>g.id===d),[re]);de(()=>{let d=U.getEntry("cross_embedded");if(!d)return;let g=ie(d.connectorId);if(!g)return;let I=!1;return(async()=>{try{let k=await g.getProvider();if(I)return;k?.sdk?.applyTheme?.(u,f??void 0)}catch(k){console.debug("[crossx-kit] applyTheme skipped:",k)}})(),()=>{I=!0}},[U,ie,u,f]);let Pe=Ae(d=>{p(d),tn(d)},[]),s=Ae(()=>{p(null),tn(null),A(null)},[]);de(()=>{if(!O?.subscribeModalState)return;let d=!1;return O.subscribeModalState({kitConfig:W},g=>{if(He.current=g,g){d=!0;return}d&&(d=!1,setTimeout(()=>{ve.current||(async()=>{try{await V()}catch{}s()})()},250))})},[O,W,V,s]),de(()=>{if(!w||h||typeof window>"u"||w==="cross_embedded")return;let d=typeof document<"u"&&!document.hasFocus(),g=null,I=()=>{d=!0},k=()=>{d&&(g&&clearTimeout(g),g=setTimeout(()=>{ve.current||He.current||(async()=>{try{await V()}catch{}s()})()},1e3))};return window.addEventListener("blur",I),window.addEventListener("focus",k),()=>{window.removeEventListener("blur",I),window.removeEventListener("focus",k),g&&clearTimeout(g)}},[w,h,V,s]);let a=Ae(async d=>{console.debug("[crossx-kit] runConnect enter",{walletId:d,activeProvider:n,isConnected:h,activeConnectorId:D?.id});let g=U.getEntry(d);if(!g){if((d==="metamask"||d==="binance")&&!F){console.error(`[crossx-kit] "${d}" 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: "${d}"`);return}if(A(d),g.providerKind!==n){console.debug("[crossx-kit] provider swap needed",{from:n,to:g.providerKind,walletId:d}),Pe(d);try{await V()}catch{}await new Promise(k=>setTimeout(k,0)),i(g.providerKind,d);return}if(Pe(d),O?.beforeConnect)try{let k=await O.beforeConnect({kitConfig:W,themeMode:u},d);if(console.debug("[crossx-kit] beforeConnect result",{walletId:d,result:k}),k==="handled")return}catch(k){console.warn('[crossx-kit] adapter.beforeConnect threw for "%s":',d,k)}let I=ie(g.connectorId);if(console.debug("[crossx-kit] findConnector",{lookupId:g.connectorId,found:I?.id,availableIds:re.map(k=>k.id)}),!I){console.error(`[crossx-kit] Connector "${g.connectorId}" not found on provider "${g.providerKind}". Available: ${re.map(k=>k.id).join(", ")}`),s();return}try{console.debug("[crossx-kit] connectAsync start",{connectorId:I.id});let k=await j({connector:I});console.debug("[crossx-kit] connectAsync resolved",{accountsLen:k.accounts.length,chainId:k.chainId});return}catch(k){if(!Pr(k)){console.error('[crossx-kit] connectAsync error for "%s":',d,k);try{await V()}catch{}}if(!g.fallbackConnectorId){s();return}}if(g.fallbackConnectorId){let k=ie(g.fallbackConnectorId);if(k)try{await j({connector:k})}catch(K){console.error('[crossx-kit] Fallback connect failed for "%s":',d,K);try{await V()}catch{}s()}else s()}},[U,re,ie,j,V,Pe,s,O,n,W,i,u]);de(()=>{if(!o)return;let d=o;r(),a(d)},[o,n]);let c=Ae(async()=>{S(!0)},[]),m=Ae(async()=>{try{await V()}catch(d){console.error("[crossx-kit] wagmi disconnect error:",d)}if(O?.teardown)try{await O.teardown({kitConfig:W})}catch(d){console.error("[crossx-kit] adapter teardown error:",d)}Jt(),s()},[V,O,W,s]),y=Ae(async()=>{await en(V(),3e3);try{let d=U.getEntry("cross_embedded"),g=d&&ie(d.connectorId);if(g?.getProvider){let I=await Promise.race([g.getProvider(),new Promise(K=>setTimeout(K,3e3))]),k=I?.sdk?.signOut;typeof k=="function"&&await en(k.call(I.sdk),3e3)}}catch{}Jt()},[U,ie,V]),P=Ae(async()=>{let d=U.getEntry("cross_embedded");if(!d)return null;let g=ie(d.connectorId);if(!g)return null;try{let I=await g.getProvider(),k=I?.sdk;if(!k?.selectWallet)return null;let K=await k.selectWallet(k.currentAddress??void 0);return K?.address&&I.notifyAccountsChanged&&I.notifyAccountsChanged([K.address]),K}catch{return null}},[U,ie]),E=Oe(()=>{let d=t.oauth;return d?{signIn:async g=>{A("cross_embedded");try{await d.signIn(g)}catch(I){throw A(null),I}}}:null},[t.oauth]),R=Ge(!1);de(()=>{if(n!=="cross"||h||B||G||w!=null||R.current)return;let d=U.getEntry("cross_embedded");if(!d)return;let g=ie(d.connectorId);if(!g)return;R.current=!0;let I=!1;return(async()=>{try{let k=await g.isAuthorized?.();if(I||!k)return;await j({connector:g})}catch{}})(),()=>{I=!0}},[n,h,B,G,w,U,ie,j]),de(()=>{if(w!=="cross_embedded"||h||typeof window>"u")return;let d=!document.hasFocus(),g=()=>{d=!0};window.addEventListener("blur",g);let I=setTimeout(()=>{ve.current||d||(console.warn("[crossx-kit] embedded sign-in stalled before the OAuth popup opened \u2014 clearing the stale session so a retry starts clean"),s(),y())},vr);return()=>{window.removeEventListener("blur",g),clearTimeout(I)}},[w,h,s,y]);let L=w!=null&&!h,H=Oe(()=>({kitConfig:W,connectorRegistry:U,availableWallets:xe,connect:a,connectWallet:c,disconnect:m,selectWallet:P,currentWallet:N,lastIntent:x,isConnecting:L,connectingWalletId:w,openOtherWallets:()=>S(!0),closeOtherWallets:()=>S(!1),otherWalletsOpen:C,oauth:E,extraWallets:b,walletAllowlist:l,onRampEnabled:X}),[W,U,xe,a,c,m,P,N,x,L,w,C,E,b,l,X]),_=nn(St.Provider,{value:H,children:[e,je(vt,{open:C,onOpenChange:S})]});return De&&(_=je(Ir,{config:De,children:_})),fe&&(_=je(Tr,{config:fe,children:_})),_}var Er=[/Connection interrupted while trying to subscribe/i,/No matching key\. subscription:/i,/Proposal expired/i];function Or(e){let t=e?.message;return typeof t!="string"?!1:Er.some(n=>n.test(t))}var Nr={};function Fr(e){return e&&{...e,connections:new Map,current:null}}function Dr({children:e,config:t,initialState:n,extraWallets:i=Nr,walletAllowlist:o}){let[r,u]=Ue(()=>Rr(t.activeProviderStorageKey,t.defaultProvider)),[f,b]=Ue(null),l=Ge(!1),{kitConfig:C}=t,[S,x]=Ue(null),[p,w]=Ue(null),[A,v]=Ue(0),h=Oe(()=>kr(C.theme,C.autoDetectTheme),[C.theme,C.autoDetectTheme,A]),B=S??h,G=p??C.themeTokens;de(()=>{if(!C.autoDetectTheme||S||typeof window>"u"||!window.matchMedia)return;let F=window.matchMedia("(prefers-color-scheme: dark)"),O=()=>v(N=>N+1);try{return F.addEventListener("change",O),()=>F.removeEventListener("change",O)}catch{return F.addListener(O),()=>F.removeListener(O)}},[C.autoDetectTheme,S]),de(()=>{if(typeof document>"u")return;let F=document.documentElement,O=F.getAttribute("data-ds-theme"),N=F.getAttribute("data-theme");return F.setAttribute("data-ds-theme",B),N||F.setAttribute("data-theme",B),()=>{O==null?F.removeAttribute("data-ds-theme"):F.setAttribute("data-ds-theme",O),N==null&&F.removeAttribute("data-theme")}},[B]);let D=Oe(()=>xr(t.designSystem),[t.designSystem]),re=Oe(()=>({mode:B,tokens:G,setThemeMode:F=>x(F),setThemeTokens:F=>w(F)}),[B,G]);de(()=>{if(typeof window>"u")return;let F=O=>{Or(O.reason)&&O.preventDefault()};return window.addEventListener("unhandledrejection",F),()=>window.removeEventListener("unhandledrejection",F)},[]);let j=Ae((F,O)=>{l.current||(l.current=!0,b(O),u(F),Br(t.activeProviderStorageKey,F),queueMicrotask(()=>{l.current=!1}))},[t.activeProviderStorageKey]),V=Ae(()=>b(null),[]),W=r==="cross"?t.crossWagmiConfig:t.reownWagmiConfig,U=Fr(wr(n,r));if(!W){if(!(r==="cross"?t.reownWagmiConfig:t.crossWagmiConfig))throw new Error("[crossx-kit] createCrossxConfig returned no wagmi Config for either side");let O=r==="cross"?"reown":"cross";queueMicrotask(()=>u(O))}let he=W??(r==="cross"?t.reownWagmiConfig:t.crossWagmiConfig);return nn(bt.Provider,{value:re,children:[je("style",{"data-crossx-design-system":"",children:D}),je(lr,{config:he,initialState:U,children:je(yr,{client:Sr,children:je(_r,{config:t,activeProvider:r,onRequestProviderSwap:j,pendingConnectWalletId:f,clearPending:V,themeMode:B,themeTokens:G,extraWallets:i,walletAllowlist:o??t.kitConfig.wallets??null,children:e})})},r)]})}import{useCallback as qe,useEffect as No,useMemo as mt}from"react";import{useQueryClient as Fo}from"@tanstack/react-query";import{useAccount as Do,useChainId as Wo,useConfig as Lo,useSendTransaction as Mo,useSwitchChain as Go}from"wagmi";import{getPublicClient as Dt,readContracts as Rn}from"wagmi/actions";import{WalletInfo as Wt,ConnectorId as Ve,resolveEnvironment as Uo}from"@nexus-cross/dapp-ui";import{useOptionalOnRamp as Ko,useOptionalOnRampEligibility as $o}from"@nexus-cross/onramp/react";import{APPLE_ICON as Ut,BINANCE_ICON as En,CROSSX_ICON as Gt,EXTENSION_ICON as qo,GOOGLE_ICON as On,METAMASK_ICON as Nn}from"@nexus-cross/connect-kit-wagmi";import{useCallback as ee,useMemo as Re,useRef as Wr}from"react";import{useQueries as rn,useQuery as ot}from"@tanstack/react-query";import{encodeFunctionData as dt,formatUnits as kt,parseSignature as Lr,parseUnits as Mr}from"viem";import{getChainId as At,getPublicClient as hn,readContract as Ie,signTypedData as Gr,switchChain as on,waitForTransactionReceipt as Ur,writeContract as sn}from"wagmi/actions";import{useConfig as Kr}from"wagmi";async function yt(e,t,n){if(!(!n||t===void 0))try{if(e.getChainId()===t)return;await e.switchChain(t)}catch{}}function $r(e){return e!=="bridge"}var wn="0x0000000000000000000000000000000000000000",ke=100,it=18,qr=180000n,Vr=250000n,Cn=new Set([56,97]),Hr=130n,zr=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"}]}},Xe=[{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"}]}],Rt=[{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"}]}],an=[{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"}]}],cn=[{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"}]}],jr=[{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:[]}],Xr=[{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 kn(e){let t="";try{t=await e.text()}catch{}if(t){try{let n=JSON.parse(t),i=typeof n.data=="string"&&n.data||typeof n.message=="string"&&n.message||"";if(i)return`${i} (status ${e.status})`}catch{}return`${t.slice(0,300)} (status ${e.status})`}return`status ${e.status}`}async function Ke(e,t){let n=await fetch(e,{cache:"no-store",signal:t});if(!n.ok)throw new Error(`CrossD bridge adapter request failed: ${await kn(n)}`);let i=await n.json();if(i&&typeof i=="object"&&"code"in i&&typeof i.code=="number"&&i.code!==200)throw new Error(i.message||`CrossD bridge adapter API error: ${i.code}`);return i&&typeof i=="object"&&"data"in i?i.data:i}async function dn(e,t,n){let i=await fetch(e,{method:"POST",cache:"no-store",signal:n,headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(!i.ok)throw new Error(`CrossD bridge adapter request failed: ${await kn(i)}`);let o=await i.json();if(o&&typeof o=="object"&&"code"in o&&typeof o.code=="number"&&o.code!==200)throw new Error(o.message||`CrossD bridge adapter API error: ${o.code}`);return o&&typeof o=="object"&&"data"in o?o.data:o}function Yr(e){return new Promise(t=>setTimeout(t,e))}async function Zr(e,t,{attempts:n=60,intervalMs:i=2e3}={}){for(let o=0;o<n;o+=1){try{let r=await Ke(`${e}/permit-hash/${t}`);if(Ot(r))return r}catch{}await Yr(i)}return null}function ne(e,t){return`${e}-${t.toLowerCase()}`}function le(e){return ne(e.chainId,e.address)}function Be(e){return e==="swap"||e==="deposit-swap"||e==="swap-withdraw"}function Jr(e){let t=e instanceof Error?e.message:typeof e=="string"?e:"",n=t.toLowerCase();return n.includes("quoteexactinputsingle")||n.includes("quoteexactoutputsingle")||n.includes("getamountswapbridgeout")||n.includes("getamountswapbridgein")||n.includes("execution reverted")?"Amount is too large for this route.":t.split(`
|
|
2
|
-
`)[0]?.trim()||"Failed to quote bridge."}function ln(e){return e===56||e===97?"BSC":e===612044||e===612055?"CROSS":`Chain ${e}`}function te(e,t){return t?t.toLowerCase()===e.contracts.NATIVE_CROSS.toLowerCase()?e.contracts.W_CROSS:t:wn}function Ye(e){let t=kt(e,it);return t.includes(".")?t.replace(/\.?0+$/,""):t}function ut(e){return Mr(e||"0",it)}function pe(e){try{return ut(e||"0")}catch{return 0n}}function $e(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 Bt(e){let t=kt(e,9);return(t.includes(".")?t.replace(/\.?0+$/,""):t)||"0"}function ht(e){return e==="bridge"?qr:Vr}function un(e,t){if(!e||!t)return"0";let n=e*e;if(n===0n)return"0";let i=t*t,o=i>n?i-n:n-i;if(o===0n)return"0";let r=(o*100000000n+n/2n)/n;if(r>=100000000n)return"100";let u=r/1000000n,f=(r%1000000n).toString().padStart(6,"0").replace(/0+$/,"");return f?`${u}.${f}`:`${u}`}function eo(e){if(!e||Number(e)===0)return"0%";let[t,n=""]=e.split("."),i=n.length>4?n.slice(0,4):n;return i?`${t}.${i}%`:`${t}%`}async function mn(e,t,n,i,o,r=!1){let u=hn(e,{chainId:t}),f=n;try{let l=await u?.estimateContractGas?.({account:o.account,address:o.address,abi:o.abi,functionName:o.functionName,args:o.args,value:o.value});typeof l=="bigint"&&l>0n&&(f=i?l*Hr/zr:l)}catch{}let b={gas:f};if(Cn.has(t))try{let l=await u?.getGasPrice?.();typeof l=="bigint"&&l>0n&&(b.gasPrice=l)}catch{}else if(r)try{let l=await u?.estimateFeesPerGas?.();typeof l?.maxFeePerGas=="bigint"&&(b.maxFeePerGas=l.maxFeePerGas),typeof l?.maxPriorityFeePerGas=="bigint"&&(b.maxPriorityFeePerGas=l.maxPriorityFeePerGas)}catch{}return b}function xn(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 _t(e,t){let n=xn(t);return n>=10000n?0n:e*(10000n-n)/10000n}function to(e,t){let n=xn(t);return(e*(10000n+n)+9999n)/10000n}function lt(){return BigInt(Math.floor(Date.now()/1e3)+1800)}var no={100:"0.01%",500:"0.05%",3e3:"0.3%",1e4:"1%"};function ro(e){return no[e]??`${e/1e4}%`}function oo(e,t){let n=Number(e||"0");return!Number.isFinite(n)||n<=0?"0":(n*t/1e6).toFixed(8).replace(/\.?0+$/,"")}function pn(e){return Ye(e)}function fn(e,t){let n=Number(t??"0");return!Number.isFinite(n)||n<=0?0n:e*BigInt(Math.floor(n))/1000n}function wt(e,t){if(!e)return!1;let n=e.toLowerCase();return t.some(i=>i.toLowerCase()===n)}function so(e,t,n){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(o=>wt(t,o.from)&&wt(n,o.to)||wt(t,o.to)&&wt(n,o.from))}function io(e){if(Be(e.type))return null;if(e.type==="swap-bridge"){let t=e.steps.find(n=>n.type==="bridge");return t?{from:t.fromChain,to:t.toChain,token:t.fromToken}:null}if(e.type==="bridge-swap"){let t=e.steps.find(n=>n.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 ao({input:e,path:t,config:n}){if(!n||Be(t.type))return"";let i=$e(n.minimumValue),o=$e(n.gasFee??n.gas_fee),r=t.type==="swap-bridge"?i+o*12n/10n:i;return r<=0n?"":e.fromAmount&&pe(e.fromAmount)<r&&t.type!=="swap"?`Minimum ${pn(r)}`:t.type==="swap-bridge"&&e.toAmount&&pe(e.toAmount)<r?`Available ${pn(r)} or more.`:""}function co({input:e,path:t,config:n}){if(!n||t.type!=="bridge"&&t.type!=="bridge-swap")return"";let i=$e(n.gasFee??n.gas_fee);if(i<=0n||!e.fromAmount)return"";let o=pe(e.fromToken.balance||"0"),r=pe(e.fromAmount);return o-i<r?`Insufficient network fee(${e.fromToken.symbol})`:""}function lo(e,t){let n=new Set;return e?.list?.forEach(i=>{let o=i.localChain??i.local_chain;o&&Object.entries(i.pairs||{}).forEach(([r,u])=>{u.forEach(f=>{f.localToken&&n.add(ne(o,f.localToken)),f.remoteToken&&n.add(ne(Number(r),f.remoteToken))})})}),Object.entries(t?.swapPools||t?.swap_pools||{}).forEach(([i,o])=>{o.forEach(r=>{r.token0&&n.add(ne(Number(i),r.token0)),r.token1&&n.add(ne(Number(i),r.token1))})}),n}function uo(e,t){return!e||!t?null:ne(e,t)}function mo({envConfig:e,bridgePairList:t,swapPools:n,tokenInfo:i,tokenStats:o}){let r=lo(t,n),u=new Map;o?.forEach(b=>{let l=uo(Number(b.chainId??b.chain_id),b.address);l&&u.set(l,b)});let f={};return r.forEach(b=>{let[l,C]=b.split("-"),S=Number(l),x=i?.find(w=>Number(w.chainId??w.chain_id)===S&&w.address?.toLowerCase()===C);if(!x?.symbol||!x.name)return;let p=u.get(b);f[b]={key:b,chainId:S,address:C,symbol:x.symbol,name:x.name,decimals:x.decimals||it,image:x.image||x.icon_url,price:p?.price?Number(p.price):void 0,isNativeToken:C.toLowerCase()===e.contracts.NATIVE_CROSS.toLowerCase()}}),f}function Tn(e,t){return t?.list?.find(n=>(n.localChain??n.local_chain)===e)?.bridge||""}function In(e,t,n){let[i,o]=e.split("-"),[r,u]=t.split("-"),f=Number(i),b=Number(r);for(let l of n?.list||[]){if((l.localChain??l.local_chain)!==f)continue;let C=l.pairs?.[r];if(C){for(let S of C)if(S.localToken?.toLowerCase()===o&&S.remoteToken?.toLowerCase()===u)return{type:"bridge",fromChain:f,fromToken:o,toChain:b,toToken:u,bridgeAddress:Tn(f,n)}}}return null}function Sn(e,t,n,i){let o,r=1/0;for(let u of e||[]){let f=i(u.token0),b=i(u.token1);if(f===t&&b===n||b===t&&f===n){let l=u.fee??ke;l<r&&(o=u,r=l)}}return o?{fee:r,poolAddress:o.poolAddress||o.pool_address||""}:null}function vn(e,t,n,i){let[o,r]=e.split("-"),[u,f]=t.split("-");if(o!==u)return null;let b=Number(o),l=(n?.swapPools||n?.swap_pools)?.[o];if(!l)return null;let C=i.contracts.W_CROSS.toLowerCase(),S=i.contracts.NATIVE_CROSS.toLowerCase(),p=Sn(l,r,f,A=>A?.toLowerCase()===C?S:A?.toLowerCase());if(!p)return null;let w="swap";return b===i.chainIds.cross&&(r===S&&(w="deposit-swap"),f===S&&(w="swap-withdraw")),{pathType:w,step:{type:"swap",chain:b,fromToken:r,toToken:f,fee:p.fee,poolAddress:p.poolAddress}}}function po(e,t,n,i){let[o,r]=e.split("-"),[u]=t.split("-");if(o===u)return null;let f=(n?.swapPools||n?.swap_pools)?.[o]||[],b=l=>l?.toLowerCase();for(let l of f){let C=b(l.token0),S=b(l.token1),x=C===r?S:S===r?C:null;if(!x)continue;let p=In(ne(Number(o),x),t,i);if(!p)continue;let w=Sn(f,r,x,b);return[{type:"swap",chain:Number(o),fromToken:r,toToken:x,fee:w?.fee??ke,poolAddress:w?.poolAddress??""},p]}return null}function fo(e,t,n,i,o){let[r,u]=e.split("-"),[f]=t.split("-");if(r===f)return null;for(let b of n?.list||[])if((b.localChain??b.local_chain)===Number(r))for(let l of b.pairs?.[f]||[]){if(l.localToken?.toLowerCase()!==u)continue;let C=l.remoteToken?.toLowerCase();if(!C)continue;let S=vn(ne(Number(f),C),t,i,o);if(S)return[{type:"bridge",fromChain:Number(r),fromToken:u,toChain:Number(f),toToken:C,bridgeAddress:Tn(Number(r),n)},S.step]}return null}function go({envConfig:e,bridgePairList:t,swapPools:n,enrichedTokens:i}){return(o,r)=>{let u=i[o],f=i[r];if(!u||!f||o===r)return null;let b=In(o,r,t);if(b)return{type:"bridge",steps:[b],from:u,to:f};let l=vn(o,r,n,e);if(l)return{type:l.pathType,steps:[l.step],from:u,to:f};let C=po(o,r,n,t);if(C)return{type:"swap-bridge",steps:C,from:u,to:f};let S=fo(o,r,t,n,e);return S?{type:"bridge-swap",steps:S,from:u,to:f}:null}}function gn(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 bo(e){return e.length<=10?e:`${e.slice(0,6)}...${e.slice(-4)}`}function yo(e){return e.includes(".")?e.replace(/\.?0+$/,"")||"0":e}function ho(e,t){let n=e.startsWith("-"),i=n?e.slice(1):e,[o,r=""]=i.split("."),u=r.slice(0,t).replace(/0+$/,""),f=u?`${o}.${u}`:o;return n?`-${f}`:f}function wo(e){let t=e.startsWith("-"),n=t?e.slice(1):e,[i,o]=n.split("."),r=i.replace(/\B(?=(\d{3})+(?!\d))/g,","),u=o?`${r}.${o}`:r;return t?`-${u}`:u}function Et(e){if(e==null||e==="")return"0";let t=String(e),n=Number(t);return!Number.isFinite(n)||n===0?"0":wo(ho(t,4))}function bn(e,t){if(e==null||e==="")return"0";try{return yo(kt(BigInt(String(e)),t.decimals))}catch{return"0"}}function Ot(e){return!!(e&&/^0x[0-9a-fA-F]+$/.test(e))}function Co(e){return e?new Date(e*1e3).toISOString():new Date().toISOString()}function ko(e,t){return t.toLowerCase()===e.contracts.W_CROSS.toLowerCase()?e.contracts.NATIVE_CROSS:t}function xo(e,t){let n=bo(t);return{name:n,symbol:n,chainId:e,address:t,decimals:it,balance:"0"}}function yn({envConfig:e,tokenByBridgeKey:t,chainId:n,address:i}){if(!i)return null;let o=ko(e,i);return t.get(ne(n,o))||t.get(ne(n,i))||xo(n,o)}function Ct(e){return e?.toLowerCase()||""}function To(e){if(e.source==="swap")return"swap";let t=Ct(e.fromToken??e.from_token),n=Ct(e.toToken??e.to_token),i=Ct(e.swapTokenIn??e.swap_token_in),o=Ct(e.swapTokenOut??e.swap_token_out);return n&&i&&n===i?"bridge-swap":t&&o&&t===o?"swap-bridge":"bridge"}function Io(e,t){let n=e.status??0,i=e.extracallSuccess??e.extracall_success??!1;return t==="bridge-swap"&&n===1&&!i?"failed":n===1?"success":"pending"}function So({envConfig:e,item:t,tokenByBridgeKey:n}){let i=Number(t.fromChainID??t.from_chain_id??0),o=Number(t.toChainID??t.to_chain_id??0);if(!i||!o)return null;let r=To(t),u=t.swapTokenIn??t.swap_token_in,f=t.swapTokenOut??t.swap_token_out,b=t.swapAmountIn??t.swap_amount_in,l=t.swapAmountOut??t.swap_amount_out,C=t.fromToken??t.from_token,S=t.toToken??t.to_token,x=t.value,p=t.value;r==="swap"?(C=u,S=f,x=b,p=l):r==="swap-bridge"?(C=u,x=b,p=t.value):r==="bridge-swap"&&(S=f,x=b,p=l);let w=yn({envConfig:e,tokenByBridgeKey:n,chainId:i,address:C}),A=yn({envConfig:e,tokenByBridgeKey:n,chainId:o,address:S}),v=t.initiatedTxHash??t.initiated_tx_hash;return!w||!A||!Ot(v)?null:{id:`${v}-${t.index??""}`,timestamp:Co(t.initiatedTime??t.initiated_time),txHash:v,fromToken:w,toToken:A,fromAmount:bn(x,w),toAmount:bn(p,A),summary:{pathType:r},status:Io(t,r)}}function vo(e){let t=new Map;return e.flat().forEach(n=>{let i=Number(n.chainId??n.chain_id),o=n.address?.toLowerCase();if(!i||!o)return;let r=n.quantity?.numeric??n.balance??"0",u=n.quantity?.decimals??n.decimals??it;try{t.set(ne(i,o),kt(BigInt(r||"0"),u))}catch{t.set(ne(i,o),"0")}}),t}function Fe(e,t="first"){let n=e.steps.filter(i=>i.type==="swap");return t==="last"?n[n.length-1]:n[0]}function Po(e,t){let n=(e?.swapPools||e?.swap_pools)?.[String(t.chainIds.cross)];if(!n?.length)return"";let i=t.contracts.CROSSD.toLowerCase(),o=t.contracts.USDTX.toLowerCase(),r=n.find(u=>{let f=u.token0?.toLowerCase(),b=u.token1?.toLowerCase();return f===i&&b===o||f===o&&b===i});return r?.poolAddress||r?.pool_address||""}function Ao(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 Ro(e){if(e===void 0)return;let t=10n**BigInt(it),n=e>=50000n*t?"normal":e>10000n*t?"low":"rebalancing",i=Number(e>0n?e*100n/(100000n*t):0n);return{label:"Available Liquidity",status:n,percentage:Math.min(i,100)}}function st(e,t,n,i){let o=[e.from,e.to].find(r=>r.chainId===t&&r.address.toLowerCase()===n.toLowerCase())??i?.[ne(t,n)];return{symbol:o?.symbol||n.slice(0,6),iconUrl:o?.image}}function Bo(e,t){let n=[];for(let o of e.steps)o.type==="swap"?(n.push({chain:o.chain,address:o.fromToken}),n.push({chain:o.chain,address:o.toToken})):(n.push({chain:o.fromChain,address:o.fromToken}),n.push({chain:o.toChain,address:o.toToken}));let i=n.filter((o,r)=>r===0||!(o.chain===n[r-1].chain&&o.address.toLowerCase()===n[r-1].address.toLowerCase()));return i.length===0?[{symbol:e.from.symbol,iconUrl:e.from.image},{symbol:e.to.symbol,iconUrl:e.to.image}]:i.map(o=>st(e,o.chain,o.address,t))}function _o({input:e,path:t,amountData:n,gasInfo:i,liquidity:o,enrichedTokens:r,priceImpact:u}){let f=e.fromAmount||"0",b=e.toAmount||"0",l=Fe(t),C=t.steps.find(G=>G.type==="bridge"),S=t.type!=="bridge",x=!Be(t.type),p=l?oo(f,l.fee):"0",w=Number(f)>0||Number(b)>0,A=l?st(t,l.chain,l.fromToken,r):{symbol:e.fromToken.symbol,iconUrl:e.fromToken.iconUrl},v=l?st(t,l.chain,l.toToken,r):{symbol:e.toToken.symbol,iconUrl:e.toToken.iconUrl},h=C?st(t,C.fromChain,C.fromToken,r):void 0,B=(G,D,re)=>w?D&&D>0n?{label:G,value:Ye(D),tone:"default",valueToken:re}:{label:G,value:"Free",tone:"accent"}:{label:G,value:"0"};return{pathType:t.type,priceImpact:u,liquidity:o,bridgeInfo:x&&C?[{label:"Route",value:`${ln(C.fromChain)} \u2192 ${ln(C.toChain)}`},B("Validator Fee",n?.exFee,h),B("Network Fee",n?.networkFee,h)]:void 0,swapInfo:S&&l?[{label:"Route",value:"",routeTokens:[st(t,l.chain,l.fromToken,r),st(t,l.chain,l.toToken,r)]},{label:"Price Impact",value:eo(u)},{label:"In Amount",value:Et(f),valueToken:A},{label:l&&Be(t.type)?`Swap Fee (${ro(l.fee??ke)})`:"Swap Fee",value:Et(p),valueToken:A},{label:"Out Amount",value:Et(b),valueToken:v}]:void 0,txFee:[...i?.gasPrice?[{label:"Gas Price",value:`${i.gasPrice} Gwei`}]:[{label:"Priority Fee Per Gas",value:`${i?.priorityFeePerGas||"0"} Gwei`},{label:"Max Fee Per Gas",value:`${i?.maxFeePerGas||"0"} Gwei`}],{label:"Gas Limit",value:i?.gasLimit||"0"}],txFeeInfo:i?{estTxFee:i.estTxFee,isDelegateFee:i.isDelegateFee,tokenIconUrl:i.gasCurrencyIconUrl,tokenSymbol:i.gasCurrencySymbol}:{estTxFee:"0",isDelegateFee:!1}}}function Nt({env:e,walletAddress:t,enabled:n=!0,restoreChainAfterSwitch:i=!0}){let o=Kr(),r=Qr[e],u=n,f=Wr(new Map),b=ot({queryKey:["crossd-bridge-adapter",e,"pairs"],queryFn:({signal:s})=>Ke(`${r.bridgeApi}/pairs`,s),enabled:u,staleTime:3e4}),l=ot({queryKey:["crossd-bridge-adapter",e,"swap-pools"],queryFn:({signal:s})=>Ke(`${r.bridgeApi}/swap-pools`,s),enabled:u,staleTime:3e4}),C=Re(()=>Po(l.data,r),[r,l.data]),S=ot({queryKey:["crossd-bridge-adapter",e,"available-liquidity",C],queryFn:async()=>await Ie(o,{address:r.contracts.USDTX,abi:Rt,functionName:"balanceOf",args:[C],chainId:r.chainIds.cross}),enabled:u&&!!C,staleTime:3e4}),x=ot({queryKey:["crossd-bridge-adapter",e,"token-info"],queryFn:({signal:s})=>Ke(`${r.walletApi}/v1/public/token/info`,s),enabled:u,staleTime:3e4}),p=ot({queryKey:["crossd-bridge-adapter",e,"token-stats"],queryFn:({signal:s})=>Ke(`${r.walletApi}/v1/public/token/stats`,s),enabled:u,staleTime:3e4}),w=rn({queries:[r.chainIds.cross,r.chainIds.bsc].map(s=>({queryKey:["crossd-bridge-adapter",e,"balance",t,s],queryFn:({signal:a})=>{let c=new URLSearchParams({networkId:`eip155:${s}`,account:t||""});return Ke(`${r.walletApi}/v1/public/token/balance?${c}`,a)},enabled:u&&!!t,staleTime:0,refetchInterval:u&&t?5e3:!1}))}),A=rn({queries:[r.chainIds.cross,r.chainIds.bsc].map(s=>({queryKey:["crossd-bridge-adapter",e,"gas-suggestion",s],queryFn:async({signal:a})=>{try{let y=await hn(o,{chainId:s})?.estimateFeesPerGas?.();if(y?.maxFeePerGas||y?.gasPrice)return{fast:{maxFee:y.maxFeePerGas?.toString()||y.gasPrice?.toString(),maxPriorityFee:y.maxPriorityFeePerGas?.toString()||"0"}}}catch{}let c=new URLSearchParams({chain_id:String(s),without_gas_limit:"false"});return Ke(`${r.walletApi}/v1/public/transaction/gas-suggestion/dynamic?${c}`,a)},enabled:u,staleTime:1e4,retry:1}))}),v=r.hiddenPairs,h=Re(()=>mo({envConfig:r,bridgePairList:b.data,swapPools:l.data,tokenInfo:x.data,tokenStats:p.data}),[b.data,r,l.data,x.data,p.data]),B=Re(()=>go({envConfig:r,bridgePairList:b.data,swapPools:l.data,enrichedTokens:h}),[b.data,h,r,l.data]),G=Re(()=>vo(w.map(s=>s.data).filter(s=>Array.isArray(s))),[w]),D=Re(()=>{let s=new Map;return Object.values(h).forEach(a=>{let c=gn(a,G);s.set(a.key,c)}),s},[G,h]),re=Re(()=>{let s=new Map,a=D.get(ne(r.chainIds.cross,r.contracts.NATIVE_CROSS));a&&s.set(r.chainIds.cross,{symbol:a.symbol,iconUrl:a.iconUrl});let c=x.data?.find(m=>Number(m.chainId??m.chain_id)===r.chainIds.bsc&&(m.symbol??"").toUpperCase()==="BNB");return c&&s.set(r.chainIds.bsc,{symbol:c.symbol??"BNB",iconUrl:c.image??c.icon_url}),s},[r,D,x.data]),j=ot({queryKey:["crossd-bridge-adapter",e,"history",t],queryFn:({signal:s})=>dn(`${r.bridgeApi}/history`,{owner:t,page:1,size:20,sort:"desc",status:"all"},s),enabled:u&&!!t,staleTime:0,refetchInterval:u&&t?5e3:!1}),V=Re(()=>(j.data?.histories||[]).map(s=>So({envConfig:r,item:s,tokenByBridgeKey:D})).filter(s=>!!s),[j.data?.histories,r,D]),W=Re(()=>Ro(S.data),[S.data]),U=A[0]?.data,he=A[1]?.data,F=Re(()=>{let s=new Map;return U&&s.set(r.chainIds.cross,U),he&&s.set(r.chainIds.bsc,he),s},[he,U,r.chainIds.bsc,r.chainIds.cross]),O=ee((s,a,c)=>{let m=F.get(s.from.chainId)?.fast,y=a?c?.gasLimit??ht(s.type):0n,P=c?.gasPrice&&c.gasPrice>0n?c.gasPrice:0n,E=c?.maxFeePerGas&&c.maxFeePerGas>0n?c.maxFeePerGas:0n,R=c?.maxPriorityFeePerGas&&c.maxPriorityFeePerGas>0n?c.maxPriorityFeePerGas:0n,L=$e(m?.maxFee??m?.max_fee),H=$e(m?.maxPriorityFee??m?.max_priority_fee),T=E>0n?E:L>0n?L:P,_=R>0n?R:H>0n?H:T,d=P>0n?P:T,g=Cn.has(s.from.chainId)&&d>0n,k=y*(g?d:T),K=D.get(ne(s.from.chainId,r.contracts.NATIVE_CROSS)),q=s.type!=="swap-bridge",Z=re.get(s.from.chainId);return{estTxFee:a?Ye(k):"0",priorityFeePerGas:a&&!g?Bt(_):"0",maxFeePerGas:a&&!g?Bt(T):"0",gasLimit:a?y.toString():"0",gasPrice:a&&g?Bt(d):void 0,isDelegateFee:s.type==="swap-bridge"?!1:so(r,s.from.address,s.to.address),tokenIconUrl:q?K?.iconUrl:void 0,tokenSymbol:q?K?.symbol:void 0,gasCurrencyIconUrl:Z?.iconUrl,gasCurrencySymbol:Z?.symbol}},[r,F,re,D]),N=ee(async s=>{let a=io(s);if(!a)return null;let c=`${e}:${a.from}:${a.to}:${a.token.toLowerCase()}`,m=f.current.get(c);if(m)return m;let y=(async()=>{let P=new URLSearchParams({from:String(a.from),to:String(a.to),token:a.token});try{return(await Ke(`${r.bridgeApi}/token-config?${P}`)).config??null}catch{return null}})();return f.current.set(c,y),y},[e,r.bridgeApi]),xe=Re(()=>{let s=Object.values(h).map(c=>gn(c,G)),a=ne(r.chainIds.cross,r.contracts.CROSSD);return s.sort((c,m)=>{let y=le(c).toLowerCase()===a.toLowerCase(),P=le(m).toLowerCase()===a.toLowerCase();return y!==P?y?-1:1:le(c).localeCompare(le(m))})},[G,h,r]),Je=ee(s=>{let a=le(s),c=a.toLowerCase(),m=[];Object.keys(h).forEach(E=>{let R=E.toLowerCase();if(c===R||v.some(T=>T.fromKey===c&&T.toKey===R))return;let L=B(a,E);if(!L)return;let H=D.get(E);H&&m.push({token:H,path:L})});let y=ne(r.chainIds.cross,r.contracts.CROSSD),P=ne(r.chainIds.cross,r.contracts.NATIVE_CROSS);return m.sort((E,R)=>{if(c===y.toLowerCase()){let d=le(E.token).toLowerCase()===P.toLowerCase(),g=le(R.token).toLowerCase()===P.toLowerCase();if(d!==g)return d?-1:1}let L=Be(E.path.type),H=Be(R.path.type);if(L!==H)return L?-1:1;let T=E.token.chainId===s.chainId,_=R.token.chainId===s.chainId;return T!==_?T?-1:1:le(E.token).localeCompare(le(R.token))}),m.map(E=>E.token)},[h,r,B,v,D]),se=ee(async s=>await Ie(o,{address:r.contracts.SWAP_BRIDGE_ROUTER,abi:Xe,functionName:"quoter",chainId:s}),[r.contracts.SWAP_BRIDGE_ROUTER,o]),X=ee(async s=>{At(o)!==s&&await on(o,{chainId:s})},[o]),fe=ee(s=>yt({getChainId:()=>At(o),switchChain:a=>on(o,{chainId:a})},s,i),[i,o]),me=ee(async s=>await Ie(o,{address:r.contracts.SWAP_BRIDGE_ROUTER,abi:Xe,functionName:"swapRouter",chainId:s}),[r.contracts.SWAP_BRIDGE_ROUTER,o]),Te=ee(async({path:s,step:a,amount:c,source:m})=>{let y=await se(a.chain),P=a.poolAddress?Ie(o,{address:a.poolAddress,abi:jr,functionName:"slot0",chainId:a.chain}).then(L=>L?.[0]).catch(()=>{}):Promise.resolve(void 0);if(m==="from"){let L=await Ie(o,{address:y,abi:cn,functionName:"quoteExactInputSingle",args:[{tokenIn:te(r,a.fromToken),tokenOut:te(r,a.toToken),amountIn:ut(c),fee:a.fee??ke,sqrtPriceLimitX96:0n}],chainId:a.chain}),H=un(await P,L[1]);return{amount:Ye(L[0]),path:s,priceImpact:H}}let E=await Ie(o,{address:y,abi:cn,functionName:"quoteExactOutputSingle",args:[{tokenIn:te(r,a.fromToken),tokenOut:te(r,a.toToken),amount:ut(c),fee:a.fee??ke,sqrtPriceLimitX96:0n}],chainId:a.chain}),R=un(await P,E[1]);return{amount:Ye(E[0]),path:s,priceImpact:R}},[r,se,o]),Se=ee(async(s,a)=>{if(!t)throw new Error("Wallet is not connected.");let c=ht(a.type);if(Be(a.type)){let T=Fe(a,"first");if(!T)throw new Error("Swap route is not available.");let _=pe(s.fromAmount),d=pe(s.toAmount);if(_<=0n)throw new Error("Bridge amount is empty.");if(d<=0n)throw new Error("Bridge quote is not ready.");let g=await me(T.chain),I=_t(d,s.slippage),k=a.type==="swap-withdraw"?wn:t,K={tokenIn:te(r,T.fromToken),tokenOut:te(r,T.toToken),fee:T.fee??ke,recipient:k,deadline:lt(),amountIn:_,amountOutMinimum:I,sqrtPriceLimitX96:0n};if(a.type==="swap-withdraw"){let q=dt({abi:Ne,functionName:"exactInputSingle",args:[K]}),Z=dt({abi:Ne,functionName:"unwrapWETH9",args:[I,t]});return{address:g,abi:Ne,functionName:"multicall",args:[[q,Z]],chainId:T.chain,fallbackGasLimit:c}}if(a.type==="deposit-swap"){let q=dt({abi:Ne,functionName:"exactInputSingle",args:[K]}),Z=dt({abi:Ne,functionName:"refundETH",args:[]});return{address:g,abi:Ne,functionName:"multicall",args:[[q,Z]],value:_,chainId:T.chain,fallbackGasLimit:c}}return{address:g,abi:Ne,functionName:"exactInputSingle",args:[K],chainId:T.chain,fallbackGasLimit:c}}if(a.type==="swap-bridge"){let T=Fe(a,"first");if(!T)throw new Error("Swap bridge route is not available.");let _=pe(s.fromAmount),d=pe(s.toAmount);if(_<=0n)throw new Error("Bridge amount is empty.");if(d<=0n)throw new Error("Bridge quote is not ready.");let g=r.contracts.SWAP_BRIDGE_ROUTER,I=lt(),k={toChainID:BigInt(a.to.chainId),recipient:t,extraData:"0x"},K={tokenIn:te(r,a.from.address),tokenOut:te(r,T.toToken),fee:T.fee??ke,sqrtPriceLimitX96:0n,bridgeParams:k};if(s.lastChangedBy==="to"){let Z={...K,amountOut:d,amountInMaximum:to(_,s.slippage)};return{address:g,abi:Xe,functionName:"swapBridgeExactOutputSingle",args:[Z,I],value:a.from.isNativeToken?Z.amountInMaximum:void 0,chainId:a.from.chainId,fallbackGasLimit:c}}let q={...K,amountIn:_,amountOutMinimum:_t(_,s.slippage)};return{address:g,abi:Xe,functionName:"swapBridgeExactInputSingle",args:[q,I],value:a.from.isNativeToken?_:void 0,chainId:a.from.chainId,fallbackGasLimit:c}}let m=a.steps.find(T=>T.type==="bridge");if(!m?.bridgeAddress)throw new Error("Bridge route is not available.");let y=pe(s.fromAmount);if(y<=0n)throw new Error("Bridge amount is empty.");let P=await N(a),E=$e(P?.gasFee??P?.gas_fee),R=fn(y,P?.exFeeRate??P?.ex_fee_rate),L="0x";if(a.type==="bridge-swap"){let T=Fe(a,"last");if(!T)throw new Error("Bridge swap route is not available.");let _=pe(s.toAmount);if(_<=0n)throw new Error("Bridge quote is not ready.");let d=await me(a.to.chainId),g=_t(_,s.slippage),I=dt({abi:Ne,functionName:"exactInputSingle",args:[{tokenIn:te(r,T.fromToken),tokenOut:te(r,T.toToken),fee:T.fee??ke,recipient:t,deadline:lt(),amountIn:y,amountOutMinimum:g,sqrtPriceLimitX96:0n}]});L=`${d}${I.slice(2)}`}let H=[BigInt(a.to.chainId),a.from.address,t,y,E,R,L];return{address:m.bridgeAddress,abi:Xr,functionName:"bridgeToken",args:H,value:a.from.isNativeToken?y+R+E:void 0,chainId:a.from.chainId,fallbackGasLimit:c}},[r,N,me,t]),De=ee(async(s,a)=>{if(a.type==="bridge"||a.type==="bridge-swap")return Se(s,a);if(!t)throw new Error("Wallet is not connected.");let c=pe(s.fromAmount);if(c<=0n)throw new Error("Bridge amount is empty.");if(a.type==="swap-bridge"){let E=Fe(a,"first");if(!E)throw new Error("Swap bridge route is not available.");let R=r.contracts.SWAP_BRIDGE_ROUTER,L={tokenIn:te(r,a.from.address),tokenOut:te(r,E.toToken),fee:E.fee??ke,sqrtPriceLimitX96:0n,bridgeParams:{toChainID:BigInt(a.to.chainId),recipient:t,extraData:"0x"},amountIn:c,amountOutMinimum:0n};return{address:R,abi:Xe,functionName:"swapBridgeExactInputSingle",args:[L,lt()],value:a.from.isNativeToken?c:void 0,chainId:a.from.chainId,fallbackGasLimit:ht(a.type)}}let m=Fe(a,"first");if(!m)throw new Error("Swap route is not available.");let y=await me(m.chain),P={tokenIn:te(r,m.fromToken),tokenOut:te(r,m.toToken),fee:m.fee??ke,recipient:t,deadline:lt(),amountIn:c,amountOutMinimum:0n,sqrtPriceLimitX96:0n};return{address:y,abi:Ne,functionName:"exactInputSingle",args:[P],value:a.from.isNativeToken?c:void 0,chainId:m.chain,fallbackGasLimit:ht(a.type)}},[Se,r,me,t]),ve=ee(async(s,a)=>{if(!t)return null;try{let c=await De(s,a),m=Be(a.type)||a.type==="swap-bridge",y=await mn(o,c.chainId,c.fallbackGasLimit,m,{account:t,address:c.address,abi:c.abi,functionName:c.functionName,args:c.args,value:c.value},!0);return{gasLimit:y.gas,gasPrice:y.gasPrice,maxFeePerGas:y.maxFeePerGas,maxPriorityFeePerGas:y.maxPriorityFeePerGas}}catch{return null}},[De,o,t]),we=ee(async s=>{let a=le(s.fromToken),c=le(s.toToken),m=B(a,c);if(!m)return{error:"Route is not available."};let y=s.lastChangedBy==="to"?s.toAmount:s.fromAmount,P=!!y&&Number(y)>0,E=Ao(m,r)?W:void 0,R=async(I,k,K)=>{let q=P?await ve(I,m):null,Z=O(m,P,q);return _o({input:I,path:m,gasInfo:Z,amountData:k,liquidity:E,enrichedTokens:h,priceImpact:K})};if(!y||Number(y)<=0)return{fromAmount:s.fromAmount,toAmount:s.toAmount,summary:await R(s)};let L=await N(m),H=$e(L?.gasFee??L?.gas_fee),T=m.type==="bridge"||m.type==="bridge-swap"?{networkFee:H}:void 0,_=m.type==="bridge"?s.lastChangedBy==="to"?{...s,fromAmount:s.toAmount}:{...s,toAmount:s.fromAmount}:s,d=ao({input:_,path:m,config:L});if(d)return{fromAmount:_.fromAmount,toAmount:_.toAmount,summary:await R(_,T),error:d};let g=co({input:_,path:m,config:L});if(g)return{fromAmount:_.fromAmount,toAmount:_.toAmount,summary:await R(_,T),error:g};if(m.type==="bridge")return{fromAmount:_.fromAmount,toAmount:_.toAmount,summary:await R(_,T)};try{if(m.type==="swap-bridge"){let q=Fe(m,"first"),Z=r.contracts.SWAP_BRIDGE_ROUTER;if(!q)return{error:"Swap bridge route is not ready."};let tt=ge=>Te({path:m,step:q,amount:ge,source:"from"}).then(Me=>Me.priceImpact).catch(()=>{});if(s.lastChangedBy==="from"){let ge=await Ie(o,{address:Z,abi:Xe,functionName:"getAmountSwapBridgeOut",args:[BigInt(m.to.chainId),te(r,m.from.address),te(r,q.toToken),q.fee??ke,ut(s.fromAmount)],chainId:m.from.chainId}),Me=Ye(ge[1]),pt={...s,toAmount:Me};return{toAmount:Me,summary:await R(pt,{networkFee:ge[3],exFee:ge[4]},await tt(s.fromAmount))}}let ze=await Ie(o,{address:Z,abi:Xe,functionName:"getAmountSwapBridgeIn",args:[BigInt(m.to.chainId),te(r,m.from.address),te(r,q.toToken),q.fee??ke,ut(s.toAmount)],chainId:m.from.chainId}),ae=Ye(ze[1]),nt={...s,fromAmount:ae};return{fromAmount:ae,summary:await R(nt,{networkFee:ze[3],exFee:ze[4]},await tt(ae))}}let I=m.type==="bridge-swap"?Fe(m,"last"):Fe(m,"first");if(!I)return{error:"Swap route is not available."};let k=await Te({path:m,step:I,amount:y,source:s.lastChangedBy});if(s.lastChangedBy==="from"){let q={...s,toAmount:k.amount};return{toAmount:k.amount,summary:await R(q,T,k.priceImpact)}}let K={...s,fromAmount:k.amount};return{fromAmount:k.amount,summary:await R(K,T,k.priceImpact)}}catch(I){return{fromAmount:s.fromAmount,toAmount:s.toAmount,summary:await R(s,T),error:Jr(I)}}},[W,O,h,r,ve,B,N,Te,o]),He=ee(async s=>{if(s.from.isNativeToken)return null;if(s.type==="swap"||s.type==="deposit-swap"||s.type==="swap-withdraw")return me(s.from.chainId);if(s.type==="swap-bridge")return r.contracts.SWAP_BRIDGE_ROUTER;let a=s.steps.find(c=>c.type==="bridge");return a?.bridgeAddress?a.bridgeAddress:null},[r.contracts.SWAP_BRIDGE_ROUTER,me]),et=ee(async s=>{if(!t)throw new Error("Wallet is not connected.");let a=le(s.fromToken),c=le(s.toToken),m=B(a,c);if(!m)throw new Error("Route is not available.");if(!Be(m.type)&&m.type!=="swap-bridge"||m.from.isNativeToken)return null;let y=pe(s.fromAmount);if(y<=0n)return null;let P=await He(m);return!P||await Ie(o,{address:m.from.address,abi:Rt,functionName:"allowance",args:[t,P],chainId:m.from.chainId})>=y?null:{token:s.fromToken,tokenAddress:m.from.address,spenderAddress:P,amount:s.fromAmount}},[B,He,o,t]),We=ee(async(s,a)=>{let c=pe(a.amount||s.fromAmount);if(c<=0n)throw new Error("Approval amount is empty.");await X(a.token.chainId);let m=await sn(o,{address:a.tokenAddress,abi:Rt,functionName:"approve",args:[a.spenderAddress,c],chainId:a.token.chainId});await Ur(o,{hash:m,chainId:a.token.chainId})},[X,o]),Le=ee(async(s,a)=>{let c=await Se(s,a);await X(c.chainId);let m=await mn(o,c.chainId,c.fallbackGasLimit,$r(a.type),{account:t,address:c.address,abi:c.abi,functionName:c.functionName,args:c.args,value:c.value});return{txHash:await sn(o,{address:c.address,abi:c.abi,functionName:c.functionName,args:c.args,value:c.value,chainId:c.chainId,...m}),fromToken:s.fromToken,toToken:s.toToken,fromAmount:s.fromAmount,toAmount:s.toAmount}},[Se,X,o,t]),ie=ee(async(s,a)=>{let c=t;if(!c)throw new Error("Wallet is not connected.");let m=a.steps.find(Me=>Me.type==="bridge");if(!m?.bridgeAddress)throw new Error("Bridge route is not available.");let y=a.from.address,P=a.from.chainId,E=pe(s.fromAmount);if(E<=0n)throw new Error("Bridge amount is empty.");let R=await N(a),L=$e(R?.gasFee??R?.gas_fee),H=fn(E,R?.exFeeRate??R?.ex_fee_rate),T=E+H+L,[_,d]=await Promise.all([Ie(o,{address:y,abi:an,functionName:"name",chainId:P}),Ie(o,{address:y,abi:an,functionName:"nonces",args:[c],chainId:P})]),g=BigInt(Math.floor(Date.now()/1e3)+300),I=await Gr(o,{domain:{name:_,version:"1",chainId:P,verifyingContract:y},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:m.bridgeAddress,value:T,nonce:d,deadline:g}}),{r:k,s:K,v:q,yParity:Z}=Lr(I),tt=q!==void 0?Number(q):Z+27,ze={exFee:H.toString(),from:P,fromToken:y,nonce:Number(d),gasFee:L.toString(),permitArgs:{account:c,deadline:g.toString(),r:k,s:K,token:y,v:tt,value:T.toString()},to:c,toChainID:String(a.to.chainId),value:T.toString()},ae=await dn(`${r.bridgeApi}/permit`,ze),nt=ae?.requestId??ae?.request_id;if(!nt)throw new Error("Bridge permit request failed.");let ge=await Zr(r.bridgeApi,nt);if(!Ot(ge))throw new Error("Bridge submitted, but confirmation timed out. Check History shortly.");return{txHash:ge,fromToken:s.fromToken,toToken:s.toToken,fromAmount:s.fromAmount,toAmount:s.toAmount}},[r,N,o,t]),Pe=ee(async s=>{let a=At(o),c=le(s.fromToken),m=le(s.toToken),y=B(c,m);if(!y)throw new Error("Route is not available.");if(!(Be(y.type)||y.type==="swap-bridge"||y.type==="bridge-swap"||y.type==="bridge"))throw new Error("This bridge route is not supported yet.");let R=y.type==="bridge"&&y.from.chainId===r.chainIds.bsc&&y.from.address.toLowerCase()===r.contracts.BSC_CROSS.toLowerCase()?await ie(s,y):await Le(s,y);return await fe(a),{...R,pathType:y.type,routeTokens:Bo(y,h)}},[h,r,B,fe,ie,Le,o]);return{bridgeTokens:xe,bridgeHistory:V,getBridgeApproval:et,approveBridge:We,getBridgeQuote:we,getBridgeToTokens:Je,submitBridge:Pe,isLoading:b.isLoading||l.isLoading||x.isLoading||p.isLoading||w.some(s=>s.isLoading)}}import{useEffect as Pn,useRef as Eo,useState as An}from"react";import{useAccount as Oo}from"wagmi";function Ft(e){let{address:t,connector:n}=Oo(),{currentWallet:i}=Ee(),o=e?.walletId!==void 0?e.walletId:i,r=e?.connector!==void 0?e.connector:n,u=e?.address!==void 0?e.address:t,[f,b]=An({loginType:null,accountName:null,accounts:[],isResolved:!1}),l=Eo(new Map),[C,S]=An(0);return Pn(()=>{let x=!1;if(o!=="cross_embedded")return b({loginType:null,accountName:null,accounts:[],isResolved:!0}),()=>{x=!0};if(!r)return b({loginType:null,accountName:null,accounts:[],isResolved:!1}),()=>{x=!0};b(v=>({...v,isResolved:!1}));let p=20,w=300,A=async()=>{if(typeof r.getProvider!="function")return"retry";let v;try{v=await r.getProvider()}catch{return"retry"}let h=v?.sdk;if(!h)return"giveup";try{let N=h.getRNBridgeActiveWallet?.(),xe=N?.walletName?.trim();N&&xe&&l.current.set(N.address.toLowerCase(),xe)}catch{}let[B,G]=await Promise.all([h.getUserInfo?.().catch(()=>null)??null,h.getAddresses?.().catch(()=>null)??null]);if(x)return"done";let D=B?.loginType,re=D==="google"||D==="apple"?D:null;if(!re)return"retry";let j=u?.toLowerCase(),V=j&&Array.isArray(G)?G.find(N=>N.address.toLowerCase()===j):null,W=Array.isArray(G)?G.filter(N=>/^0x[a-fA-F0-9]{40}$/.test(N.address)).map(N=>({address:N.address.toLowerCase(),...Number.isFinite(N.index)?{index:N.index}:{},...N.name?.trim()?{name:N.name.trim()}:{}})):[],U=j?l.current.get(j)?.trim():void 0,he=!V&&j&&/^0x[a-fA-F0-9]{40}$/.test(j)?[...W,{address:j,index:W.length,...U?{name:U}:{}}]:W,O=U||V?.name?.trim()||(typeof V?.index=="number"?`Account ${V.index+1}`:u?`${u.slice(0,6)}\u2026${u.slice(-4)}`:null);return b({loginType:re,accountName:O,accounts:he,isResolved:!0}),"done"};return(async()=>{for(let v=0;v<p;v++){if(x)return;let h=await A();if(h==="done")return;if(h==="giveup"){x||b({loginType:null,accountName:null,accounts:[],isResolved:!0});return}await new Promise(B=>setTimeout(B,w))}x||b({loginType:null,accountName:null,accounts:[],isResolved:!0})})(),()=>{x=!0}},[o,r,u,C]),Pn(()=>{if(o!=="cross_embedded"||!r||typeof r.getProvider!="function")return;let x=!1,p;return(async()=>{let w;try{w=await r.getProvider()}catch{return}if(x)return;let A=w?.sdk;A?.on&&(p=A.on("addressChanged",({address:v,walletName:h})=>{let B=h?.trim();B&&(l.current.set(v.toLowerCase(),B),S(G=>G+1))}))})(),()=>{x=!0,p?.()}},[o,r]),f}import{Fragment as _n,jsx as ue,jsxs as Ze}from"react/jsx-runtime";var Vo=[{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"}]}],Ho=[{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"}]}],zo={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"}},Lt=10n**18n,Qo={google:{name:"Google",iconUrl:On,connectorId:Ve.CROSSx},apple:{name:"Apple",iconUrl:Ut,connectorId:Ve.CROSSx},cross:{name:"CROSSx",iconUrl:Gt,connectorId:Ve.CROSSx},metamask:{name:"MetaMask",iconUrl:Nn,connectorId:Ve.MetaMask},binance:{name:"Binance Wallet",iconUrl:En,connectorId:Ve.Binance}};function jo(e){switch(e){case"cross_embedded":return Ve.CROSSx;case"metamask":return Ve.MetaMask;case"binance":return Ve.Binance;default:return}}function Xo(e,t){switch(e){case"cross_embedded":return t==="google"?{name:"Google",iconUrl:On}:t==="apple"?{name:"Apple",iconUrl:Ut}:{name:"CROSSx",iconUrl:Gt};case"cross_wallet":return{name:"CROSSx Wallet",iconUrl:Gt};case"cross_extension":return{name:"CROSSx Extension",iconUrl:qo};case"metamask":return{name:"MetaMask",iconUrl:Nn};case"binance":return{name:"Binance Wallet",iconUrl:En};default:return null}}var Yo="Bridge is available only with the CROSSx 2.0 wallet.",Zo="Send is available only with the CROSSx 2.0 wallet.";function Jo({label:e="Connect Wallet",className:t,style:n,walletInfoStyle:i,user:o,enablePortfolio:r,portfolio:u,theme:f,accountName:b,connectorId:l,showPortfolio:C,sendAccounts:S,getTransactionReceipt:x,sendTransaction:p,estimateGas:w,onDisconnect:A,onSelectWallet:v,onBuy:h,onRampRedirectUrl:B,bridgeTokens:G,bridgeHistory:D,getBridgeQuote:re,getBridgeToTokens:j,getBridgeApproval:V,approveBridge:W,submitBridge:U,showBalance:he=!0,env:F,...O}){let{address:N,isConnected:xe,connector:Je,chain:se}=Do(),X=Lo(),fe=Wo(),{switchChainAsync:me}=Go(),{sendTransactionAsync:Te}=Mo(),{connectWallet:Se,disconnect:De,selectWallet:ve,currentWallet:we,isConnecting:He,kitConfig:et}=Ee(),We=et?.restoreChainAfterSwitch!==!1,Le=ct(),ie=f??Le?.mode??"dark",Pe=mt(()=>Uo(F),[F]),s=o?.address??N,a=o?Qo[o.provider]:null,{loginType:c,accountName:m,accounts:y}=Ft({walletId:we,connector:Je,address:s}),P=mt(()=>a?{name:a.name,iconUrl:a.iconUrl}:Xo(we,c),[a,we,c]),E=b??o?.name??m??void 0,R=a?a.connectorId:jo(we),L=l??R,H=u??C??!!r,T=Nt({env:Pe,walletAddress:s,enabled:xe&&!!s&&he,restoreChainAfterSwitch:We}),_=G??T.bridgeTokens,d=D??T.bridgeHistory,g=re??T.getBridgeQuote,I=j??T.getBridgeToTokens,k=V??T.getBridgeApproval,K=W??T.approveBridge,q=U??T.submitBridge,Z=qe(()=>{Se().catch(M=>{console.error("[crossx-kit] connectWallet error:",M)})},[Se]),tt=qe(()=>{De()},[De]),ze=A??tt,ae=Ko(),{eligibility:nt}=$o({network:se?String(se.id):void 0}),ge=nt?.allowed===!0,Me=mt(()=>{if(h)return h;if(!(!ae||!se||!ge))return()=>ae.open({crypto:se.nativeCurrency?.symbol??"USDT",network:String(se.id),...B?{redirectUrl:B}:{}}).then(()=>{}).catch(M=>{throw console.warn("[crossx-kit] onramp open failed:",M),M})},[h,ae,se,ge,B]),pt=Fo();No(()=>{if(ae?.onStatus)return ae.onStatus(()=>{pt.invalidateQueries()})},[ae,pt]);let Mn=mt(()=>{if(!h&&!(!ae||!se)&&!ge)return"On-ramp is not available in your region."},[h,ae,se,ge]),Kt=mt(()=>o?o.provider==="google"||o.provider==="apple":we==="cross_embedded",[o,we]),Gn=O.onBridgeDisabledMessage??(Kt?void 0:Yo),Un=O.onSendDisabledMessage??(Kt?void 0:Zo),Kn=o?o.provider==="google"||o.provider==="apple":we==="cross_embedded",$n=qe(()=>{ve().catch(M=>{console.error("[crossx-kit] selectWallet error:",M)})},[ve]),$t=v??(Kn?$n:void 0),qn=qe(async({hash:M,chainId:Y})=>{let J=Dt(X,Y?{chainId:Y}:void 0);if(!J)return null;try{return await J.getTransactionReceipt({hash:M})}catch{return null}},[X]),Vn=qe(async M=>{let Y=fe,J=!1;M.chainId!==void 0&&M.chainId!==fe&&(await me({chainId:M.chainId}),J=!0);let ce=M.chainId===56||M.chainId===97?{...M,type:"legacy"}:M,z=await(p??Te)(ce);return await yt({getChainId:()=>J?M.chainId:Y,switchChain:ye=>me({chainId:ye})},Y,We),z},[p,Te,fe,me,We]),Hn=H||p?Vn:void 0,zn=qe(async M=>{let Y=M.chainId??fe,J=Dt(X,Y?{chainId:Y}:void 0);if(!J)throw new Error(`publicClient for chainId ${Y??"unknown"} is not available \u2014 register the chain in createCrossxConfig({ networks }).`);let be=Y===56||Y===97,[ce,Ce]=await Promise.all([J.estimateGas({account:M.from,to:M.to,value:M.value,data:M.data}),(async()=>{if(be)return{maxFeePerGas:void 0,maxPriorityFeePerGas:void 0,gasPrice:await J.getGasPrice()};try{let z=await J.estimateFeesPerGas();return{maxFeePerGas:z.maxFeePerGas,maxPriorityFeePerGas:z.maxPriorityFeePerGas,gasPrice:void 0}}catch{return{maxFeePerGas:void 0,maxPriorityFeePerGas:void 0,gasPrice:await J.getGasPrice()}}})()]);return{gasLimit:ce,maxFeePerGas:Ce.maxFeePerGas,maxPriorityFeePerGas:Ce.maxPriorityFeePerGas,gasPrice:Ce.gasPrice}},[X,fe]),Qn=w??zn,jn=qe(async M=>{let Y={};if(!N||M.length===0)return Y;let J=M.flatMap(ce=>{let z={address:ce,abi:Vo,chainId:fe};return[{...z,functionName:"balanceOf",args:[N]},{...z,functionName:"totalSupply"},{...z,functionName:"decimals"}]}),be;try{be=await Rn(X,{contracts:J,allowFailure:!0})}catch{return Y}return M.forEach((ce,Ce)=>{let z=Ce*3,ye=be[z],ft=be[z+1],rt=be[z+2];!ye||ye.status!=="success"||(Y[ce.toLowerCase()]={balance:ye.result,totalSupply:ft&&ft.status==="success"?ft.result:void 0,decimals:rt&&rt.status==="success"?Number(rt.result):void 0})}),Y},[X,N,fe]),Xn=qe(async M=>{let Y={earnedWei:0n,stakedWei:0n};if(!M)return Y;let J=zo[Pe],be={address:J.poolAddress,abi:Ho,chainId:J.crossChainId},ce;try{ce=await Rn(X,{allowFailure:!0,contracts:[{...be,functionName:"earned",args:[M]},{...be,functionName:"balanceOf",args:[M]},{...be,functionName:"posaActive"},{...be,functionName:"lastRewardBlock"},{...be,functionName:"totalStaked"}]})}catch{return Y}let Ce=Qe=>ce[Qe]&&ce[Qe].status==="success"?ce[Qe].result:0n,z=Ce(0),ye=Ce(1);if(ce[2]&&ce[2].status==="success"?ce[2].result:!1)return{earnedWei:z,stakedWei:ye};let rt=Ce(3),Ht=Ce(4);if(Ht===0n)return{earnedWei:z,stakedWei:ye};let xt=0n;try{xt=await Dt(X,{chainId:J.crossChainId})?.getBlockNumber?.()??0n}catch{return{earnedWei:z,stakedWei:ye}}if(xt<=rt)return{earnedWei:z,stakedWei:ye};let Tt=0n;try{let Qe=await fetch(J.networkStatsUrl).then(It=>It.json()),zt=Qe?.data?.block_reward??Qe?.block_reward;if(zt){let[It,er=""]=String(zt).split("."),tr=(er+"0".repeat(18)).slice(0,18);Tt=BigInt(It||"0")*Lt+BigInt(tr||"0")}}catch{}if(Tt===0n)return{earnedWei:z,stakedWei:ye};let Zn=(xt-rt)*Tt*Lt/Ht,Jn=ye*Zn/Lt;return{earnedWei:z+Jn,stakedWei:ye}},[X,Pe]),qt=!$t,Vt=t?`cb-button ${t}`:"cb-button",Yn=t?`cb-pill ${t}`:"cb-pill";return He&&!xe?Ze(_n,{children:[ue("style",{children:Mt}),Ze("button",{type:"button",disabled:!0,className:Vt,style:n,"aria-busy":"true",children:[ue("span",{className:"cb-spinner","aria-hidden":"true"}),ue("span",{className:"cb-button-label",children:"Connecting..."})]})]}):xe&&s?Ze("span",{"data-crossx-wallet-info":qt?"external":"embedded",children:[ue("style",{children:Mt}),qt&&ue("style",{children:ts}),Ze(Wt,{...O,env:Pe,theme:ie,showBalance:he,walletAddress:s,accountName:E,sendAccounts:S??y,connectorId:L,showPortfolio:H,onDisconnect:ze,onSelectWallet:$t,onBuy:Me,onBuyDisabledMessage:Mn,onBridgeDisabledMessage:Gn,onSendDisabledMessage:Un,sendTransaction:Hn,getTransactionReceipt:x??qn,estimateGas:Qn,lpBalanceReader:jn,stakingRewardsReader:Xn,bridgeTokens:_,bridgeHistory:d,getBridgeQuote:g,getBridgeToTokens:I,getBridgeApproval:k,approveBridge:K,submitBridge:q,style:i,children:[ue(Wt.Trigger,{asChild:!0,children:Ze("button",{type:"button",className:Yn,style:n,"aria-label":`Connected with ${P?.name??"wallet"}: ${Bn(s)}`,children:[P?.iconUrl?ue("img",{src:P.iconUrl,alt:"",width:20,height:20,className:"cb-pill-icon","data-provider":P.iconUrl===Ut?"apple":void 0}):ue("span",{className:"cb-pill-icon-placeholder","aria-hidden":"true"}),ue("span",{className:"cb-pill-address",children:Bn(s)})]})}),ue(Wt.Content,{align:"end",sideOffset:8})]})]}):Ze(_n,{children:[ue("style",{children:Mt}),Ze("button",{type:"button",onClick:Z,className:Vt,style:n,"aria-label":typeof e=="string"?e:"Connect Wallet",children:[ue(es,{}),ue("span",{className:"cb-button-label",children:e})]})]})}function es(){return ue("svg",{className:"cb-button-icon",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:ue("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 ts=`
|
|
3
|
-
[data-crossx-wallet-info="external"] .wi-select-wallet-btn {
|
|
4
|
-
display: none !important;
|
|
5
|
-
}
|
|
6
|
-
`;function Bn(e){return`${e.slice(0,6)}...${e.slice(-4)}`}var Mt=`
|
|
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 Fn,useEffect as ns,useMemo as Dn,useState as rs}from"react";import{detectWallets as Wn,DEFAULT_WALLET_REGISTRY as Ln}from"@nexus-cross/connect-kit-wagmi";import{jsx as oe,jsxs as _e}from"react/jsx-runtime";var os=["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"],ss="Connect with one of our available wallet providers to continue.";function is({open:e,onClose:t,onSelect:n,title:i="Connect Wallet",description:o=ss,troubleshootingTips:r=os}){let{availableWallets:u}=Ee(),[f,b]=rs({});ns(()=>{if(!e)return;let p=Wn(Ln),w={};for(let v of p)v.installed!==void 0&&(w[v.id]=v.installed);b(w);let A=setTimeout(()=>{let v=Wn(Ln),h={};for(let B of v)B.installed!==void 0&&(h[B.id]=B.installed);b(h)},1e3);return()=>clearTimeout(A)},[e]);let l=Dn(()=>typeof navigator>"u"?!1:/Mobi|Android/i.test(navigator.userAgent),[]),C=Dn(()=>l?u.filter(p=>p.type!=="extension"):u,[u,l]),S=Fn(p=>{if(!f[p.walletId]&&p.installUrl&&p.type==="extension"){window.open(p.installUrl,"_blank");return}t(),n(p.walletId)},[t,n,f]),x=Fn((p,w)=>{p.stopPropagation(),t(),window.open(w,"_blank")},[t]);return e?oe("div",{style:$.overlay,onClick:t,children:_e("div",{style:$.modal,onClick:p=>p.stopPropagation(),children:[_e("div",{style:$.header,children:[oe("h2",{style:$.title,children:i}),oe("button",{type:"button",onClick:t,style:$.closeBtn,"aria-label":"Close",children:_e("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",children:[oe("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),oe("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),oe("p",{style:$.desc,children:o}),oe("div",{style:$.walletList,children:C.map(p=>{let w=f[p.walletId],A=w===!1&&p.type==="extension"&&!!p.installUrl;return _e("div",{style:$.walletGroup,children:[_e("button",{type:"button",onClick:()=>S(p),style:{...$.walletItem,...p.walletId==="cross_wallet"?$.walletItemAccent:{}},"aria-label":`Connect with ${p.name}`,children:[p.iconUrl?oe("img",{src:p.iconUrl,alt:"",style:$.walletIcon}):oe("div",{style:$.walletIconPlaceholder}),_e("div",{style:$.walletInfo,children:[_e("div",{style:$.walletNameRow,children:[oe("span",{style:$.walletName,children:p.name}),w!==void 0&&oe("span",{style:{...$.badge,...w?$.badgeInstalled:$.badgeNotInstalled},children:w?"Installed":"Not Installed"})]}),oe("span",{style:$.walletDesc,children:A?"Extension not detected \u2014 click to install":p.type==="extension"?"Browser extension approval is required":p.walletId==="cross_wallet"?"App approval is required":p.walletId==="binance"?"Mobile app only \u2014 Add CROSS network first":w?"Connect with browser extension":"Scan QR code with app"})]})]}),p.guideUrl&&_e("button",{type:"button",onClick:v=>x(v,p.guideUrl),style:$.guideBtn,children:[oe("span",{"aria-hidden":"true",children:"\u26A0\uFE0F"}),p.guideLabel??"Required Settings"]})]},p.walletId)})}),_e("div",{style:$.troubleshoot,children:[oe("h3",{style:$.troubleshootTitle,children:"Wallet not detected?"}),oe("ul",{style:$.troubleshootList,children:r.map(p=>_e("li",{style:$.troubleshootItem,children:[oe("span",{style:$.troubleshootDot,"aria-hidden":"true"}),oe("span",{children:p})]},p))})]})]})}):null}var Q={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)"},$={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:Q.surfaceBg,border:`1px solid ${Q.borderDefault}`,borderRadius:"20px",overflow:"hidden"},header:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"20px 24px 0"},title:{fontSize:"18px",fontWeight:700,color:Q.textPrimary,margin:0},closeBtn:{background:"none",border:"none",color:Q.textTertiary,cursor:"pointer",padding:"4px",borderRadius:"8px",display:"flex",alignItems:"center",justifyContent:"center"},desc:{padding:"8px 24px 16px",fontSize:"13px",color:Q.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:Q.surfaceDefault},walletItem:{display:"flex",alignItems:"center",gap:"14px",width:"100%",padding:"14px",background:"transparent",border:"none",color:Q.textPrimary,cursor:"pointer",textAlign:"left"},walletItemAccent:{background:Q.accentGradient},walletIcon:{width:"40px",height:"40px",borderRadius:"10px",flexShrink:0},walletIconPlaceholder:{width:"40px",height:"40px",borderRadius:"10px",background:Q.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:Q.textPrimary},badge:{fontSize:"10px",fontWeight:600,padding:"2px 7px",borderRadius:"99px",lineHeight:1},badgeInstalled:{background:Q.primarySoft,color:Q.primary},badgeNotInstalled:{background:"rgba(255,255,255,0.05)",color:Q.textTertiary},walletDesc:{fontSize:"11px",color:Q.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 ${Q.warningBorder}`,background:Q.warningBg,color:Q.warningText,fontWeight:600,fontSize:"13px",cursor:"pointer"},troubleshoot:{margin:"0 12px 16px",background:Q.surfaceDefault,borderRadius:"12px",padding:"14px 16px"},troubleshootTitle:{fontSize:"12px",fontWeight:700,color:Q.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:Q.textSecondary,lineHeight:1.5},troubleshootDot:{flexShrink:0,width:"4px",height:"4px",marginTop:"6px",borderRadius:"50%",background:Q.textSecondary}};import{useOnRamp as xi,useOnRampEligibility as Ti,OnRampProvider as Ii}from"@nexus-cross/onramp/react";import{useKyc as vi,useOptionalKyc as Pi,KycProvider as Ai,KycError as Ri,launchKycVerification as Bi}from"@nexus-cross/kyc/react";import{WalletInfo as Ei,ConnectorId as Oi}from"@nexus-cross/dapp-ui";import{AppLauncher as Fi,AppLauncherTrigger as Di,AppLauncherContent as Wi,useGlobalMenu as Li}from"@nexus-cross/dapp-ui";import{SkillsButton as Gi}from"@nexus-cross/dapp-ui";import{OnRampError as Ki}from"@nexus-cross/connect-kit-core";import{ConnectionStatus as qi,formatBalance as Vi,formatWei as Hi}from"@nexus-cross/connect-kit-core";Qt();export{Ee as a,ar as b,ct as c,vt as d,Dr as e,Nt as f,Ft as g,Jo as h,is as i,xi as j,Ti as k,Ii as l,vi as m,Pi as n,Ai as o,Ri as p,Bi as q,Ei as r,Oi as s,Fi as t,Di as u,Wi as v,Li as w,Gi as x,Ki as y,qi as z,Vi as A,Hi as B};
|