@nexus-cross/connect-kit-react 1.3.0-beta.1 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/chunk-ZL2BHNN6.js +143 -0
  2. package/dist/client.d.ts +46 -4
  3. package/dist/client.js +1 -3
  4. package/dist/index.d.ts +378 -28
  5. package/dist/index.js +1 -19
  6. package/package.json +11 -8
  7. package/dist/client.d.ts.map +0 -1
  8. package/dist/client.js.map +0 -1
  9. package/dist/components/ConnectButton.d.ts +0 -102
  10. package/dist/components/ConnectButton.d.ts.map +0 -1
  11. package/dist/components/ConnectButton.js +0 -584
  12. package/dist/components/ConnectButton.js.map +0 -1
  13. package/dist/components/CrossConnectKitProvider.d.ts +0 -38
  14. package/dist/components/CrossConnectKitProvider.d.ts.map +0 -1
  15. package/dist/components/CrossConnectKitProvider.js +0 -790
  16. package/dist/components/CrossConnectKitProvider.js.map +0 -1
  17. package/dist/components/CrossConnectModal.d.ts +0 -20
  18. package/dist/components/CrossConnectModal.d.ts.map +0 -1
  19. package/dist/components/CrossConnectModal.js +0 -80
  20. package/dist/components/CrossConnectModal.js.map +0 -1
  21. package/dist/components/OtherWalletsModal.d.ts +0 -20
  22. package/dist/components/OtherWalletsModal.d.ts.map +0 -1
  23. package/dist/components/OtherWalletsModal.js +0 -300
  24. package/dist/components/OtherWalletsModal.js.map +0 -1
  25. package/dist/config/createConnectKitConfig.d.ts +0 -36
  26. package/dist/config/createConnectKitConfig.d.ts.map +0 -1
  27. package/dist/config/createConnectKitConfig.js +0 -80
  28. package/dist/config/createConnectKitConfig.js.map +0 -1
  29. package/dist/context/CrossConnectKitContext.d.ts +0 -100
  30. package/dist/context/CrossConnectKitContext.d.ts.map +0 -1
  31. package/dist/context/CrossConnectKitContext.js +0 -10
  32. package/dist/context/CrossConnectKitContext.js.map +0 -1
  33. package/dist/context/CrossConnectKitThemeContext.d.ts +0 -41
  34. package/dist/context/CrossConnectKitThemeContext.d.ts.map +0 -1
  35. package/dist/context/CrossConnectKitThemeContext.js +0 -22
  36. package/dist/context/CrossConnectKitThemeContext.js.map +0 -1
  37. package/dist/hooks/useCrossxEmbeddedInfo.d.ts +0 -41
  38. package/dist/hooks/useCrossxEmbeddedInfo.d.ts.map +0 -1
  39. package/dist/hooks/useCrossxEmbeddedInfo.js +0 -241
  40. package/dist/hooks/useCrossxEmbeddedInfo.js.map +0 -1
  41. package/dist/index.d.ts.map +0 -1
  42. package/dist/index.js.map +0 -1
  43. package/dist/runtime-log.d.ts +0 -2
  44. package/dist/runtime-log.d.ts.map +0 -1
  45. package/dist/runtime-log.js +0 -44
  46. package/dist/runtime-log.js.map +0 -1
  47. package/dist/version.d.ts +0 -2
  48. package/dist/version.d.ts.map +0 -1
  49. package/dist/version.js +0 -2
  50. package/dist/version.js.map +0 -1
@@ -0,0 +1,143 @@
1
+ var ze="1.3.1";var tt="__nexusCrossAppLauncherRuntime";function In(){if(typeof window>"u")return null;let e=window;return e[tt]??(e[tt]={mode:"dapp-ui"}),e[tt]}function vn(e){if(e.scheduled)return;e.scheduled=!0;let t=()=>{if(e.scheduled=!1,e.loggedMode!==e.mode){if(e.mode==="connect-kit-react"){let o=e.connectKitVersion??ze;console.info(`[CROSSx App Launcher] connect-kit-react v${o} \uCD08\uAE30\uD654 \uC644\uB8CC (dapp-ui v${ze}, \uC0AC\uC6A9 \uBAA8\uB4DC: connect-kit)`)}else console.info(`[CROSSx App Launcher] dapp-ui v${ze} \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 _t(){let e=In();e&&(e.mode="connect-kit-react",e.connectKitVersion=ze,vn(e))}import{useCallback as ge,useEffect as oe,useMemo as xe,useRef as Me,useState as Te}from"react";import{WagmiProvider as On,useAccount as Wn,useConnect as Dn,useDisconnect as Nn}from"wagmi";import{QueryClient as Ln,QueryClientProvider as Fn}from"@tanstack/react-query";import{clearWalletSessionStorage as Mn,onOpenOtherWallets as Un,pickInitialState as Kn,resolveCurrentWallet as Gn}from"@nexus-cross/connect-kit-wagmi";import{resolveThemeMode as $n}from"@nexus-cross/connect-kit-core";import{buildDesignSystemCss as qn}from"@nexus-cross/crossx-design-system";import{OnRampProvider as Vn}from"@nexus-cross/onramp/react";import{createContext as An,useContext as Pn}from"react";var pt=An(null);function fe(){let e=Pn(pt);if(!e)throw new Error("useCrossConnectKit must be used within <CrossConnectKitProvider>");return e}import{createContext as Rn,useContext as Et}from"react";var nt=Rn(null);function Bn(){let e=Et(nt);if(!e)throw new Error("useCrossConnectKitTheme must be used within <CrossConnectKitProvider>");return e}function Qe(){return Et(nt)}import{useCallback as _n,useMemo as Ot}from"react";import{WalletConnectModal as Wt}from"@nexus-cross/dapp-ui";import{jsx as Dt}from"react/jsx-runtime";var En=new Set(["cross_wallet","cross_extension","metamask","binance"]);function mt({open:e,onOpenChange:t}){let{connect:o,availableWallets:s,oauth:n,extraWallets:i,walletAllowlist:m}=fe(),p=Qe()?.mode??"dark",x=Ot(()=>{let w=m?new Set(m):null,l={};for(let b of s){if(!En.has(b.walletId)||w&&!w.has(b.walletId))continue;let A=b.walletId;l[A]=()=>{o(b.walletId)}}for(let[b,A]of Object.entries(i))A&&(w&&!w.has(b)||(l[b]=A));return l},[s,o,i,m]),T=Ot(()=>{if(n)return{apple:()=>{n.signIn("apple")},google:()=>{n.signIn("google")}}},[n]),S=_n(w=>t(w),[t]);return Dt(Wt,{wallets:x,socialProviders:T,theme:p,open:e,onOpenChange:S,children:Dt(Wt.Content,{})})}import{jsx as Ue,jsxs as Lt}from"react/jsx-runtime";var Hn=new Ln,ft="crossx-kit:last-wallet-intent";function zn(e){let t=[],o=e,s=0;for(;o&&s<5;){let n=o;typeof n.message=="string"&&t.push(n.message),o=n.cause,s+=1}return t.some(n=>/external wallet connection/i.test(n))}function Qn(){if(typeof window>"u")return null;try{return window.localStorage.getItem(ft)??null}catch{return null}}function Nt(e){if(!(typeof window>"u"))try{e?window.localStorage.setItem(ft,e):window.localStorage.removeItem(ft)}catch{}}function jn(e,t){if(typeof window>"u")return t;try{let o=window.localStorage.getItem(e);return o==="cross"||o==="reown"?o:t}catch{return t}}function Xn(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,t)}catch{}}function Yn({children:e,config:t,activeProvider:o,onRequestProviderSwap:s,pendingConnectWalletId:n,clearPending:i,themeMode:m,themeTokens:f,extraWallets:p,walletAllowlist:x}){let[T,S]=Te(!1),[w,l]=Te(()=>Qn()),[b,A]=Te(null),{address:k,isConnected:y,isConnecting:P,isReconnecting:W,connector:q}=Wn(),{connectors:Z,connectAsync:U}=Dn(),{disconnectAsync:F}=Nn(),{kitConfig:O,connectorRegistry:D,crossProvider:le,reownProvider:v}=t,B=o==="cross"?le:v,_=xe(()=>!y||!q?null:Gn(D,q.id,w),[y,q,D,w]),re=xe(()=>D.entries.filter(c=>c.type!=="embedded"),[D]),j=Me(k);j.current=k;let K=!!O.onRampEnabled&&!!O.crossProjectId?.trim(),se=xe(()=>K?{projectId:O.crossProjectId.trim(),walletState:{getAddress:()=>j.current}}:null,[K,O.crossProjectId]);oe(()=>Un(()=>S(!0)),[]),oe(()=>{if(!T||typeof document>"u")return;let c=setTimeout(()=>{document.querySelectorAll("#__crossx-confirm-overlay").forEach(g=>g.remove())},50);return()=>clearTimeout(c)},[T]);let ie=Me(y),he=Me(y);ie.current=y;let Pe=Me(!1);oe(()=>{console.debug("[crossx-kit] state",{activeProvider:o,isConnected:y,isConnecting:P,isReconnecting:W,activeConnectorId:q?.id,currentWallet:_,lastIntent:w})},[o,y,P,W,q?.id,_,w]),oe(()=>{y&&!he.current&&B?.closeModal?.({kitConfig:O}),he.current=y},[y,B,O]),oe(()=>{y&&A(null)},[y]);let J=ge(c=>Z.find(g=>g.id===c),[Z]);oe(()=>{let c=D.getEntry("cross_embedded");if(!c)return;let g=J(c.connectorId);if(!g)return;let I=!1;return(async()=>{try{let C=await g.getProvider();if(I)return;C?.sdk?.applyTheme?.(m,f??void 0)}catch(C){console.debug("[crossx-kit] applyTheme skipped:",C)}})(),()=>{I=!0}},[D,J,m,f]);let me=ge(c=>{l(c),Nt(c)},[]),V=ge(()=>{l(null),Nt(null),A(null)},[]);oe(()=>{if(!B?.subscribeModalState)return;let c=!1;return B.subscribeModalState({kitConfig:O},g=>{if(Pe.current=g,g){c=!0;return}c&&(c=!1,setTimeout(()=>{ie.current||(async()=>{try{await F()}catch{}V()})()},250))})},[B,O,F,V]),oe(()=>{if(!b||y||typeof window>"u"||b==="cross_embedded")return;let c=typeof document<"u"&&!document.hasFocus(),g=null,I=()=>{c=!0},C=()=>{c&&(g&&clearTimeout(g),g=setTimeout(()=>{ie.current||Pe.current||(async()=>{try{await F()}catch{}V()})()},1e3))};return window.addEventListener("blur",I),window.addEventListener("focus",C),()=>{window.removeEventListener("blur",I),window.removeEventListener("focus",C),g&&clearTimeout(g)}},[b,y,F,V]);let ae=ge(async c=>{console.debug("[crossx-kit] runConnect enter",{walletId:c,activeProvider:o,isConnected:y,activeConnectorId:q?.id});let g=D.getEntry(c);if(!g){if((c==="metamask"||c==="binance")&&!v){console.error(`[crossx-kit] "${c}" 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: "${c}"`);return}if(A(c),g.providerKind!==o){console.debug("[crossx-kit] provider swap needed",{from:o,to:g.providerKind,walletId:c}),me(c);try{await F()}catch{}await new Promise(C=>setTimeout(C,0)),s(g.providerKind,c);return}if(me(c),B?.beforeConnect)try{let C=await B.beforeConnect({kitConfig:O,themeMode:m},c);if(console.debug("[crossx-kit] beforeConnect result",{walletId:c,result:C}),C==="handled")return}catch(C){console.warn('[crossx-kit] adapter.beforeConnect threw for "%s":',c,C)}let I=J(g.connectorId);if(console.debug("[crossx-kit] findConnector",{lookupId:g.connectorId,found:I?.id,availableIds:Z.map(C=>C.id)}),!I){console.error(`[crossx-kit] Connector "${g.connectorId}" not found on provider "${g.providerKind}". Available: ${Z.map(C=>C.id).join(", ")}`),V();return}try{console.debug("[crossx-kit] connectAsync start",{connectorId:I.id});let C=await U({connector:I});console.debug("[crossx-kit] connectAsync resolved",{accountsLen:C.accounts.length,chainId:C.chainId});return}catch(C){if(!zn(C)){console.error('[crossx-kit] connectAsync error for "%s":',c,C);try{await F()}catch{}}if(!g.fallbackConnectorId){V();return}}if(g.fallbackConnectorId){let C=J(g.fallbackConnectorId);if(C)try{await U({connector:C})}catch(E){console.error('[crossx-kit] Fallback connect failed for "%s":',c,E);try{await F()}catch{}V()}else V()}},[D,Z,J,U,F,me,V,B,o,O,s,m]);oe(()=>{if(!n)return;let c=n;i(),ae(c)},[n,o]);let Re=ge(async()=>{S(!0)},[]),Le=ge(async()=>{try{await F()}catch(c){console.error("[crossx-kit] wagmi disconnect error:",c)}if(B?.teardown)try{await B.teardown({kitConfig:O})}catch(c){console.error("[crossx-kit] adapter teardown error:",c)}Mn(),V()},[F,B,O,V]),r=ge(async()=>{let c=D.getEntry("cross_embedded");if(!c)return null;let g=J(c.connectorId);if(!g)return null;try{let I=await g.getProvider(),C=I?.sdk;if(!C?.selectWallet)return null;let E=await C.selectWallet(C.currentAddress??void 0);return E?.address&&I.notifyAccountsChanged&&I.notifyAccountsChanged([E.address]),E}catch{return null}},[D,J]),a=xe(()=>{let c=t.oauth;return c?{signIn:async g=>{A("cross_embedded");try{await c.signIn(g)}catch(I){throw A(null),I}}}:null},[t.oauth]),u=Me(!1);oe(()=>{if(o!=="cross"||y||P||W||b!=null||u.current)return;let c=D.getEntry("cross_embedded");if(!c)return;let g=J(c.connectorId);if(!g)return;let I=!1;return(async()=>{try{let C=await g.isAuthorized?.();if(I||!C||u.current)return;u.current=!0,await U({connector:g})}catch{}})(),()=>{I=!0}},[o,y,P,W,b,D,J,U]);let d=b!=null&&!y,h=xe(()=>({kitConfig:O,connectorRegistry:D,availableWallets:re,connect:ae,connectWallet:Re,disconnect:Le,selectWallet:r,currentWallet:_,lastIntent:w,isConnecting:d,connectingWalletId:b,openOtherWallets:()=>S(!0),closeOtherWallets:()=>S(!1),otherWalletsOpen:T,oauth:a,extraWallets:p,walletAllowlist:x,onRampEnabled:K}),[O,D,re,ae,Re,Le,r,_,w,d,b,T,a,p,x,K]),R=Lt(pt.Provider,{value:h,children:[e,Ue(mt,{open:T,onOpenChange:S})]});return se?Ue(Vn,{config:se,children:R}):R}var Zn=[/Connection interrupted while trying to subscribe/i,/No matching key\. subscription:/i,/Proposal expired/i];function Jn(e){let t=e?.message;return typeof t!="string"?!1:Zn.some(o=>o.test(t))}var eo={};function to(e){return e&&{...e,connections:new Map,current:null}}function no({children:e,config:t,initialState:o,extraWallets:s=eo,walletAllowlist:n}){let[i,m]=Te(()=>jn(t.activeProviderStorageKey,t.defaultProvider)),[f,p]=Te(null),x=Me(!1),{kitConfig:T}=t,[S,w]=Te(null),[l,b]=Te(null),[A,k]=Te(0),y=xe(()=>$n(T.theme,T.autoDetectTheme),[T.theme,T.autoDetectTheme,A]),P=S??y,W=l??T.themeTokens;oe(()=>{if(!T.autoDetectTheme||S||typeof window>"u"||!window.matchMedia)return;let v=window.matchMedia("(prefers-color-scheme: dark)"),B=()=>k(_=>_+1);try{return v.addEventListener("change",B),()=>v.removeEventListener("change",B)}catch{return v.addListener(B),()=>v.removeListener(B)}},[T.autoDetectTheme,S]),oe(()=>{if(typeof document>"u")return;let v=document.documentElement,B=v.getAttribute("data-ds-theme"),_=v.getAttribute("data-theme");return v.setAttribute("data-ds-theme",P),_||v.setAttribute("data-theme",P),()=>{B==null?v.removeAttribute("data-ds-theme"):v.setAttribute("data-ds-theme",B),_==null&&v.removeAttribute("data-theme")}},[P]);let q=xe(()=>qn(t.designSystem),[t.designSystem]),Z=xe(()=>({mode:P,tokens:W,setThemeMode:v=>w(v),setThemeTokens:v=>b(v)}),[P,W]);oe(()=>{if(typeof window>"u")return;let v=B=>{Jn(B.reason)&&B.preventDefault()};return window.addEventListener("unhandledrejection",v),()=>window.removeEventListener("unhandledrejection",v)},[]);let U=ge((v,B)=>{x.current||(x.current=!0,p(B),m(v),Xn(t.activeProviderStorageKey,v),queueMicrotask(()=>{x.current=!1}))},[t.activeProviderStorageKey]),F=ge(()=>p(null),[]),O=i==="cross"?t.crossWagmiConfig:t.reownWagmiConfig,D=to(Kn(o,i));if(!O){if(!(i==="cross"?t.reownWagmiConfig:t.crossWagmiConfig))throw new Error("[crossx-kit] createCrossxConfig returned no wagmi Config for either side");let B=i==="cross"?"reown":"cross";queueMicrotask(()=>m(B))}let le=O??(i==="cross"?t.reownWagmiConfig:t.crossWagmiConfig);return Lt(nt.Provider,{value:Z,children:[Ue("style",{"data-crossx-design-system":"",children:q}),Ue(On,{config:le,initialState:D,children:Ue(Fn,{client:Hn,children:Ue(Yn,{config:t,activeProvider:i,onRequestProviderSwap:U,pendingConnectWalletId:f,clearPending:F,themeMode:P,themeTokens:W,extraWallets:s,walletAllowlist:n??null,children:e})})},i)]})}import{useCallback as De,useEffect as Vo,useMemo as it}from"react";import{useQueryClient as Ho}from"@tanstack/react-query";import{useAccount as zo,useChainId as Qo,useConfig as jo,useSendTransaction as Xo,useSwitchChain as Yo}from"wagmi";import{getPublicClient as tn,readContracts as Zo}from"wagmi/actions";import{WalletInfo as kt,ConnectorId as Ae,resolveEnvironment as Jo}from"@nexus-cross/dapp-ui";import{useOptionalOnRamp as er,useOptionalOnRampEligibility as tr}from"@nexus-cross/onramp/react";import{APPLE_ICON as vt,BINANCE_ICON as rn,CROSSX_ICON as It,EXTENSION_ICON as nr,GOOGLE_ICON as sn,METAMASK_ICON as an}from"@nexus-cross/connect-kit-wagmi";import{useCallback as Q,useMemo as be,useRef as oo}from"react";import{useQueries as Ft,useQuery as Ke}from"@tanstack/react-query";import{encodeFunctionData as je,formatUnits as st,parseUnits as ro}from"viem";import{getChainId as so,getPublicClient as io,readContract as ke,switchChain as ao,waitForTransactionReceipt as co,writeContract as Se}from"wagmi/actions";import{useConfig as lo}from"wagmi";var Qt="0x0000000000000000000000000000000000000000",ye=100,Ye=18,uo=180000n,po=250000n,mo={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"}]}},Ge=[{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"}]}],gt=[{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"}]}],Mt=[{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"}]}],Ie=[{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:[]}],Ut=[{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 Ee(e,t){let o=await fetch(e,{cache:"no-store",signal:t});if(!o.ok)throw new Error(`CrossD bridge adapter request failed: ${o.status}`);let s=await o.json();if(s&&typeof s=="object"&&"code"in s&&typeof s.code=="number"&&s.code!==200)throw new Error(s.message||`CrossD bridge adapter API error: ${s.code}`);return s&&typeof s=="object"&&"data"in s?s.data:s}async function fo(e,t,o){let s=await fetch(e,{method:"POST",cache:"no-store",signal:o,headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(!s.ok)throw new Error(`CrossD bridge adapter request failed: ${s.status}`);let n=await s.json();if(n&&typeof n=="object"&&"code"in n&&typeof n.code=="number"&&n.code!==200)throw new Error(n.message||`CrossD bridge adapter API error: ${n.code}`);return n&&typeof n=="object"&&"data"in n?n.data:n}function $(e,t){return`${e}-${t.toLowerCase()}`}function X(e){return $(e.chainId,e.address)}function We(e){return e==="swap"||e==="deposit-swap"||e==="swap-withdraw"}function Kt(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:Qt}function ve(e){let t=st(e,Ye);return t.includes(".")?t.replace(/\.?0+$/,""):t}function Xe(e){return ro(e||"0",Ye)}function ue(e){try{return Xe(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 Gt(e){let t=st(e,9);return(t.includes(".")?t.replace(/\.?0+$/,""):t)||"0"}function go(e){return e==="bridge"?uo:po}function jt(e){let t=e==="auto"?.5:Number(e||"0.5");return!Number.isFinite(t)||t<0?50n:BigInt(Math.min(1e4,Math.floor(t*100)))}function bt(e,t){let o=jt(t);return o>=10000n?0n:e*(10000n-o)/10000n}function bo(e,t){let o=jt(t);return(e*(10000n+o)+9999n)/10000n}function yt(){return BigInt(Math.floor(Date.now()/1e3)+1800)}function yo(e,t){let o=Number(e||"0");return!Number.isFinite(o)||o<=0?"0":(o*t/1e6).toFixed(8).replace(/\.?0+$/,"")}function $t(e){return ve(e)}function qt(e,t){let o=Number(t??"0");return!Number.isFinite(o)||o<=0?0n:e*BigInt(Math.floor(o))/1000n}function ot(e,t){if(!e)return!1;let o=e.toLowerCase();return t.some(s=>s.toLowerCase()===o)}function ho(e,t,o){return[{from:[e.contracts.USDTX],to:[e.contracts.CROSSD]},{from:[e.contracts.BSC_CROSS],to:[e.contracts.NATIVE_CROSS,e.contracts.W_CROSS]},{from:[e.contracts.NATIVE_CROSS,e.contracts.W_CROSS],to:[e.contracts.CROSSD]}].some(n=>ot(t,n.from)&&ot(o,n.to)||ot(t,n.to)&&ot(o,n.from))}function wo(e){if(We(e.type))return null;if(e.type==="swap-bridge"){let t=e.steps.find(o=>o.type==="bridge");return t?{from:t.fromChain,to:t.toChain,token:t.fromToken}:null}if(e.type==="bridge-swap"){let t=e.steps.find(o=>o.type==="bridge");return t?{from:t.fromChain,to:t.toChain,token:t.fromToken}:null}return{from:e.from.chainId,to:e.to.chainId,token:e.from.address}}function Co({input:e,path:t,config:o}){if(!o||We(t.type))return"";let s=$e(o.minimumValue),n=$e(o.gasFee??o.gas_fee),i=t.type==="swap-bridge"?s+n*12n/10n:s;return i<=0n?"":e.fromAmount&&ue(e.fromAmount)<i&&t.type!=="swap"?`Minimum ${$t(i)}`:t.type==="swap-bridge"&&e.toAmount&&ue(e.toAmount)<i?`Available ${$t(i)} or more.`:""}function xo(e,t){let o=new Set;return e?.list?.forEach(s=>{let n=s.localChain??s.local_chain;n&&Object.entries(s.pairs||{}).forEach(([i,m])=>{m.forEach(f=>{f.localToken&&o.add($(n,f.localToken)),f.remoteToken&&o.add($(Number(i),f.remoteToken))})})}),Object.entries(t?.swapPools||t?.swap_pools||{}).forEach(([s,n])=>{n.forEach(i=>{i.token0&&o.add($(Number(s),i.token0)),i.token1&&o.add($(Number(s),i.token1))})}),o}function To(e,t){return!e||!t?null:$(e,t)}function ko({envConfig:e,bridgePairList:t,swapPools:o,tokenInfo:s,tokenStats:n}){let i=xo(t,o),m=new Map;n?.forEach(p=>{let x=To(Number(p.chainId??p.chain_id),p.address);x&&m.set(x,p)});let f={};return i.forEach(p=>{let[x,T]=p.split("-"),S=Number(x),w=s?.find(b=>Number(b.chainId??b.chain_id)===S&&b.address?.toLowerCase()===T);if(!w?.symbol||!w.name)return;let l=m.get(p);f[p]={key:p,chainId:S,address:T,symbol:w.symbol,name:w.name,decimals:w.decimals||Ye,image:w.image||w.icon_url,price:l?.price?Number(l.price):void 0,isNativeToken:T.toLowerCase()===e.contracts.NATIVE_CROSS.toLowerCase()}}),f}function Xt(e,t){return t?.list?.find(o=>(o.localChain??o.local_chain)===e)?.bridge||""}function Yt(e,t,o){let[s,n]=e.split("-"),[i,m]=t.split("-"),f=Number(s),p=Number(i);for(let x of o?.list||[]){if((x.localChain??x.local_chain)!==f)continue;let T=x.pairs?.[i];if(T){for(let S of T)if(S.localToken?.toLowerCase()===n&&S.remoteToken?.toLowerCase()===m)return{type:"bridge",fromChain:f,fromToken:n,toChain:p,toToken:m,bridgeAddress:Xt(f,o)}}}return null}function Zt(e,t,o,s){let[n,i]=e.split("-"),[m,f]=t.split("-");if(n!==m)return null;let p=Number(n),x=(o?.swapPools||o?.swap_pools)?.[n];if(!x)return null;let T=s.contracts.W_CROSS.toLowerCase(),S=s.contracts.NATIVE_CROSS.toLowerCase(),w=l=>l?.toLowerCase()===T?S:l?.toLowerCase();for(let l of x){let b=w(l.token0),A=w(l.token1);if(b===i&&A===f||A===i&&b===f){let k="swap";return p===s.chainIds.cross&&(i===S&&(k="deposit-swap"),f===S&&(k="swap-withdraw")),{pathType:k,step:{type:"swap",chain:p,fromToken:i,toToken:f,fee:l.fee||ye,poolAddress:l.poolAddress||l.pool_address||""}}}}return null}function So(e,t,o,s){let[n,i]=e.split("-"),[m]=t.split("-");if(n===m)return null;for(let f of(o?.swapPools||o?.swap_pools)?.[n]||[]){let p=f.token0?.toLowerCase(),x=f.token1?.toLowerCase(),T=p===i?x:x===i?p:null;if(!T)continue;let S=Yt($(Number(n),T),t,s);if(S)return[{type:"swap",chain:Number(n),fromToken:i,toToken:T,fee:f.fee||ye,poolAddress:f.poolAddress||f.pool_address||""},S]}return null}function Io(e,t,o,s,n){let[i,m]=e.split("-"),[f]=t.split("-");if(i===f)return null;for(let p of o?.list||[])if((p.localChain??p.local_chain)===Number(i))for(let x of p.pairs?.[f]||[]){if(x.localToken?.toLowerCase()!==m)continue;let T=x.remoteToken?.toLowerCase();if(!T)continue;let S=Zt($(Number(f),T),t,s,n);if(S)return[{type:"bridge",fromChain:Number(i),fromToken:m,toChain:Number(f),toToken:T,bridgeAddress:Xt(Number(i),o)},S.step]}return null}function vo({envConfig:e,bridgePairList:t,swapPools:o,enrichedTokens:s}){return(n,i)=>{let m=s[n],f=s[i];if(!m||!f||n===i)return null;let p=Yt(n,i,t);if(p)return{type:"bridge",steps:[p],from:m,to:f};let x=Zt(n,i,o,e);if(x)return{type:x.pathType,steps:[x.step],from:m,to:f};let T=So(n,i,o,t);if(T)return{type:"swap-bridge",steps:T,from:m,to:f};let S=Io(n,i,t,o,e);return S?{type:"bridge-swap",steps:S,from:m,to:f}:null}}function Vt(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 Ao(e){return e.length<=10?e:`${e.slice(0,6)}...${e.slice(-4)}`}function Po(e){return e.includes(".")?e.replace(/\.?0+$/,"")||"0":e}function Ro(e,t){let o=e.startsWith("-"),s=o?e.slice(1):e,[n,i=""]=s.split("."),m=i.slice(0,t).replace(/0+$/,""),f=m?`${n}.${m}`:n;return o?`-${f}`:f}function Bo(e){let t=e.startsWith("-"),o=t?e.slice(1):e,[s,n]=o.split("."),i=s.replace(/\B(?=(\d{3})+(?!\d))/g,","),m=n?`${i}.${n}`:i;return t?`-${m}`:m}function ht(e){if(e==null||e==="")return"0";let t=String(e),o=Number(t);return!Number.isFinite(o)||o===0?"0":Bo(Ro(t,4))}function Ht(e,t){if(e==null||e==="")return"0";try{return Po(st(BigInt(String(e)),t.decimals))}catch{return"0"}}function _o(e){return!!(e&&/^0x[0-9a-fA-F]+$/.test(e))}function Eo(e){return e?new Date(e*1e3).toISOString():new Date().toISOString()}function Oo(e,t){return t.toLowerCase()===e.contracts.W_CROSS.toLowerCase()?e.contracts.NATIVE_CROSS:t}function Wo(e,t){let o=Ao(t);return{name:o,symbol:o,chainId:e,address:t,decimals:Ye,balance:"0"}}function zt({envConfig:e,tokenByBridgeKey:t,chainId:o,address:s}){if(!s)return null;let n=Oo(e,s);return t.get($(o,n))||t.get($(o,s))||Wo(o,n)}function rt(e){return e?.toLowerCase()||""}function Do(e){if(e.source==="swap")return"swap";let t=rt(e.fromToken??e.from_token),o=rt(e.toToken??e.to_token),s=rt(e.swapTokenIn??e.swap_token_in),n=rt(e.swapTokenOut??e.swap_token_out);return o&&s&&o===s?"bridge-swap":t&&n&&t===n?"swap-bridge":"bridge"}function No(e,t){let o=e.status??0,s=e.extracallSuccess??e.extracall_success??!1;return t==="bridge-swap"&&o===1&&!s?"failed":o===1?"success":"pending"}function Lo({envConfig:e,item:t,tokenByBridgeKey:o}){let s=Number(t.fromChainID??t.from_chain_id??0),n=Number(t.toChainID??t.to_chain_id??0);if(!s||!n)return null;let i=Do(t),m=t.swapTokenIn??t.swap_token_in,f=t.swapTokenOut??t.swap_token_out,p=t.swapAmountIn??t.swap_amount_in,x=t.swapAmountOut??t.swap_amount_out,T=t.fromToken??t.from_token,S=t.toToken??t.to_token,w=t.value,l=t.value;i==="swap"?(T=m,S=f,w=p,l=x):i==="swap-bridge"?(T=m,w=p,l=t.value):i==="bridge-swap"&&(S=f,w=p,l=x);let b=zt({envConfig:e,tokenByBridgeKey:o,chainId:s,address:T}),A=zt({envConfig:e,tokenByBridgeKey:o,chainId:n,address:S}),k=t.initiatedTxHash??t.initiated_tx_hash;return!b||!A||!_o(k)?null:{id:`${k}-${t.index??""}`,timestamp:Eo(t.initiatedTime??t.initiated_time),txHash:k,fromToken:b,toToken:A,fromAmount:Ht(w,b),toAmount:Ht(l,A),summary:{pathType:i},status:No(t,i)}}function Fo(e){let t=new Map;return e.flat().forEach(o=>{let s=Number(o.chainId??o.chain_id),n=o.address?.toLowerCase();if(!s||!n)return;let i=o.quantity?.numeric??o.balance??"0",m=o.quantity?.decimals??o.decimals??Ye;try{t.set($(s,n),st(BigInt(i||"0"),m))}catch{t.set($(s,n),"0")}}),t}function Oe(e,t="first"){let o=e.steps.filter(s=>s.type==="swap");return t==="last"?o[o.length-1]:o[0]}function Mo(e,t){let o=(e?.swapPools||e?.swap_pools)?.[String(t.chainIds.cross)];if(!o?.length)return"";let s=t.contracts.CROSSD.toLowerCase(),n=t.contracts.USDTX.toLowerCase(),i=o.find(m=>{let f=m.token0?.toLowerCase(),p=m.token1?.toLowerCase();return f===s&&p===n||f===n&&p===s});return i?.poolAddress||i?.pool_address||""}function Uo(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 Ko(e,t="USDT"){if(e===void 0)return;let o=ve(e),s=Number(o||"0"),n=s>=5e4?"normal":s>1e4?"low":"rebalancing",i=s>0?Math.min(s/1e5*100,100):0;return{label:"Available Liquidity",value:`${o} ${t}`,status:n,percentage:i}}function Ct(e,t,o,s){let n=[e.from,e.to].find(i=>i.chainId===t&&i.address.toLowerCase()===o.toLowerCase())??s?.[$(t,o)];return{symbol:n?.symbol||o.slice(0,6),iconUrl:n?.image}}function Go(e,t){let o=[];for(let n of e.steps)n.type==="swap"?(o.push({chain:n.chain,address:n.fromToken}),o.push({chain:n.chain,address:n.toToken})):(o.push({chain:n.fromChain,address:n.fromToken}),o.push({chain:n.toChain,address:n.toToken}));let s=o.filter((n,i)=>i===0||!(n.chain===o[i-1].chain&&n.address.toLowerCase()===o[i-1].address.toLowerCase()));return s.length===0?[{symbol:e.from.symbol,iconUrl:e.from.image},{symbol:e.to.symbol,iconUrl:e.to.image}]:s.map(n=>Ct(e,n.chain,n.address,t))}function wt({input:e,path:t,amountData:o,gasInfo:s,liquidity:n,enrichedTokens:i}){let m=e.fromAmount||"0",f=e.toAmount||"0",p=Oe(t),x=t.steps.find(y=>y.type==="bridge"),T=t.type!=="bridge",S=!We(t.type),w=p?yo(m,p.fee):"0",l=Number(m)>0||Number(f)>0,b={symbol:e.fromToken.symbol,iconUrl:e.fromToken.iconUrl},A={symbol:e.toToken.symbol,iconUrl:e.toToken.iconUrl},k=(y,P)=>l?P&&P>0n?{label:y,value:ve(P),tone:"accent"}:{label:y,value:"Free",tone:"accent"}:{label:y,value:"0"};return{pathType:t.type,liquidity:n,bridgeInfo:S&&x?[{label:"Route",value:`${Kt(x.fromChain)} \u2192 ${Kt(x.toChain)}`},k("Validator Fee",o?.exFee),k("Network Fee",o?.networkFee)]:void 0,swapInfo:T&&p?[{label:"Route",value:"",routeTokens:[Ct(t,p.chain,p.fromToken,i),Ct(t,p.chain,p.toToken,i)]},{label:"Price Impact",value:"0%"},{label:"In Amount",value:ht(m),valueToken:b},{label:"Swap Fee",value:ht(w),valueToken:b},{label:"Out Amount",value:ht(f),valueToken:A}]:void 0,txFee:[...s?.gasPrice?[{label:"Gas Price",value:`${s.gasPrice} Gwei`}]:[{label:"Priority Fee Per Gas",value:`${s?.priorityFeePerGas||"0"} Gwei`},{label:"Max Fee Per Gas",value:`${s?.maxFeePerGas||"0"} Gwei`}],{label:"Gas Limit",value:s?.gasLimit||"0"}],txFeeInfo:s?{estTxFee:s.estTxFee,isDelegateFee:s.isDelegateFee,tokenIconUrl:s.tokenIconUrl,tokenSymbol:s.tokenSymbol}:{estTxFee:"0",isDelegateFee:!1}}}function xt({env:e,walletAddress:t,enabled:o=!0}){let s=lo(),n=mo[e],i=o,m=oo(new Map),f=Ke({queryKey:["crossd-bridge-adapter",e,"pairs"],queryFn:({signal:r})=>Ee(`${n.bridgeApi}/pairs`,r),enabled:i,staleTime:3e4}),p=Ke({queryKey:["crossd-bridge-adapter",e,"swap-pools"],queryFn:({signal:r})=>Ee(`${n.bridgeApi}/swap-pools`,r),enabled:i,staleTime:3e4}),x=be(()=>Mo(p.data,n),[n,p.data]),T=Ke({queryKey:["crossd-bridge-adapter",e,"available-liquidity",x],queryFn:async()=>await ke(s,{address:n.contracts.USDTX,abi:gt,functionName:"balanceOf",args:[x],chainId:n.chainIds.cross}),enabled:i&&!!x,staleTime:3e4}),S=Ke({queryKey:["crossd-bridge-adapter",e,"token-info"],queryFn:({signal:r})=>Ee(`${n.walletApi}/v1/public/token/info`,r),enabled:i,staleTime:3e4}),w=Ke({queryKey:["crossd-bridge-adapter",e,"token-stats"],queryFn:({signal:r})=>Ee(`${n.walletApi}/v1/public/token/stats`,r),enabled:i,staleTime:3e4}),l=Ft({queries:[n.chainIds.cross,n.chainIds.bsc].map(r=>({queryKey:["crossd-bridge-adapter",e,"balance",t,r],queryFn:({signal:a})=>{let u=new URLSearchParams({networkId:`eip155:${r}`,account:t||""});return Ee(`${n.walletApi}/v1/public/token/balance?${u}`,a)},enabled:i&&!!t,staleTime:0,refetchInterval:i&&t?5e3:!1}))}),b=Ft({queries:[n.chainIds.cross,n.chainIds.bsc].map(r=>({queryKey:["crossd-bridge-adapter",e,"gas-suggestion",r],queryFn:async({signal:a})=>{try{let h=await io(s,{chainId:r})?.estimateFeesPerGas?.();if(h?.maxFeePerGas||h?.gasPrice)return{fast:{maxFee:h.maxFeePerGas?.toString()||h.gasPrice?.toString(),maxPriorityFee:h.maxPriorityFeePerGas?.toString()||"0"}}}catch{}let u=new URLSearchParams({chain_id:String(r),without_gas_limit:"false"});return Ee(`${n.walletApi}/v1/public/transaction/gas-suggestion/dynamic?${u}`,a)},enabled:i,staleTime:1e4,retry:1}))}),A=n.hiddenPairs,k=be(()=>ko({envConfig:n,bridgePairList:f.data,swapPools:p.data,tokenInfo:S.data,tokenStats:w.data}),[f.data,n,p.data,S.data,w.data]),y=be(()=>vo({envConfig:n,bridgePairList:f.data,swapPools:p.data,enrichedTokens:k}),[f.data,k,n,p.data]),P=be(()=>Fo(l.map(r=>r.data).filter(r=>Array.isArray(r))),[l]),W=be(()=>{let r=new Map;return Object.values(k).forEach(a=>{let u=Vt(a,P);r.set(a.key,u)}),r},[P,k]),q=Ke({queryKey:["crossd-bridge-adapter",e,"history",t],queryFn:({signal:r})=>fo(`${n.bridgeApi}/history`,{owner:t,page:1,size:20,sort:"desc",status:"all"},r),enabled:i&&!!t,staleTime:0,refetchInterval:i&&t?5e3:!1}),Z=be(()=>(q.data?.histories||[]).map(r=>Lo({envConfig:n,item:r,tokenByBridgeKey:W})).filter(r=>!!r),[q.data?.histories,n,W]),U=be(()=>{let r=W.get($(n.chainIds.cross,n.contracts.USDTX));return Ko(T.data,r?.symbol)},[T.data,n.chainIds.cross,n.contracts.USDTX,W]),F=b[0]?.data,O=b[1]?.data,D=be(()=>{let r=new Map;return F&&r.set(n.chainIds.cross,F),O&&r.set(n.chainIds.bsc,O),r},[O,F,n.chainIds.bsc,n.chainIds.cross]),le=Q((r,a)=>{let u=D.get(r.from.chainId)?.fast,d=a?go(r.type):0n,h=$e(u?.maxFee??u?.max_fee),R=$e(u?.maxPriorityFee??u?.max_priority_fee),c=d*h,g=W.get($(r.from.chainId,n.contracts.NATIVE_CROSS));return{estTxFee:a?ve(c):"0",priorityFeePerGas:a?Gt(R):"0",maxFeePerGas:a?Gt(h):"0",gasLimit:a?d.toString():"0",isDelegateFee:ho(n,r.from.address,r.to.address),tokenIconUrl:g?.iconUrl,tokenSymbol:g?.symbol}},[n,D,W]),v=Q(async r=>{let a=wo(r);if(!a)return null;let u=`${e}:${a.from}:${a.to}:${a.token.toLowerCase()}`,d=m.current.get(u);if(d)return d;let h=(async()=>{let R=new URLSearchParams({from:String(a.from),to:String(a.to),token:a.token});try{return(await Ee(`${n.bridgeApi}/token-config?${R}`)).config??null}catch{return null}})();return m.current.set(u,h),h},[e,n.bridgeApi]),B=be(()=>{let r=Object.values(k).map(u=>Vt(u,P)),a=$(n.chainIds.cross,n.contracts.CROSSD);return r.sort((u,d)=>{let h=X(u).toLowerCase()===a.toLowerCase(),R=X(d).toLowerCase()===a.toLowerCase();return h!==R?h?-1:1:X(u).localeCompare(X(d))})},[P,k,n]),_=Q(r=>{let a=X(r),u=a.toLowerCase(),d=[];Object.keys(k).forEach(c=>{let g=c.toLowerCase();if(u===g||A.some(E=>E.fromKey===u&&E.toKey===g))return;let I=y(a,c);if(!I)return;let C=W.get(c);C&&d.push({token:C,path:I})});let h=$(n.chainIds.cross,n.contracts.CROSSD),R=$(n.chainIds.cross,n.contracts.NATIVE_CROSS);return d.sort((c,g)=>{if(u===h.toLowerCase()){let G=X(c.token).toLowerCase()===R.toLowerCase(),Be=X(g.token).toLowerCase()===R.toLowerCase();if(G!==Be)return G?-1:1}let I=We(c.path.type),C=We(g.path.type);if(I!==C)return I?-1:1;let E=c.token.chainId===r.chainId,ne=g.token.chainId===r.chainId;return E!==ne?E?-1:1:X(c.token).localeCompare(X(g.token))}),d.map(c=>c.token)},[k,n,y,A,W]),re=Q(async r=>await ke(s,{address:n.contracts.SWAP_BRIDGE_ROUTER,abi:Ge,functionName:"quoter",chainId:r}),[n.contracts.SWAP_BRIDGE_ROUTER,s]),j=Q(async r=>{so(s)!==r&&await ao(s,{chainId:r})},[s]),K=Q(async r=>await ke(s,{address:n.contracts.SWAP_BRIDGE_ROUTER,abi:Ge,functionName:"swapRouter",chainId:r}),[n.contracts.SWAP_BRIDGE_ROUTER,s]),se=Q(async({path:r,step:a,amount:u,source:d})=>{let h=await re(a.chain);if(d==="from"){let c=await ke(s,{address:h,abi:Mt,functionName:"quoteExactInputSingle",args:[{tokenIn:te(n,a.fromToken),tokenOut:te(n,a.toToken),amountIn:Xe(u),fee:a.fee||ye,sqrtPriceLimitX96:0n}],chainId:a.chain});return{amount:ve(c[0]),path:r}}let R=await ke(s,{address:h,abi:Mt,functionName:"quoteExactOutputSingle",args:[{tokenIn:te(n,a.fromToken),tokenOut:te(n,a.toToken),amount:Xe(u),fee:a.fee||ye,sqrtPriceLimitX96:0n}],chainId:a.chain});return{amount:ve(R[0]),path:r}},[n,re,s]),ie=Q(async r=>{let a=X(r.fromToken),u=X(r.toToken),d=y(a,u);if(!d)return{error:"Route is not available."};let h=r.lastChangedBy==="to"?r.toAmount:r.fromAmount,R=!!h&&Number(h)>0,c=le(d,R),g=Uo(d,n)?U:void 0,I=(z,we)=>wt({input:z,path:d,gasInfo:c,amountData:we,liquidity:g,enrichedTokens:k});if(!h||Number(h)<=0)return{fromAmount:r.fromAmount,toAmount:r.toAmount,summary:I(r)};let C=await v(d),E=Co({input:r,path:d,config:C});if(E)return{fromAmount:r.fromAmount,toAmount:r.toAmount,summary:I(r),error:E};if(d.type==="bridge"){let z=r.lastChangedBy==="to"?{...r,fromAmount:r.toAmount}:{...r,toAmount:r.fromAmount};return{fromAmount:z.fromAmount,toAmount:z.toAmount,summary:I(z)}}if(d.type==="swap-bridge"){let z=Oe(d,"first"),we=n.contracts.SWAP_BRIDGE_ROUTER;if(!z)return{error:"Swap bridge route is not ready."};if(r.lastChangedBy==="from"){let Ve=await ke(s,{address:we,abi:Ge,functionName:"getAmountSwapBridgeOut",args:[BigInt(d.to.chainId),te(n,d.from.address),te(n,z.toToken),z.fee||ye,Xe(r.fromAmount)],chainId:d.from.chainId}),Je=ve(Ve[1]),ct={...r,toAmount:Je};return{toAmount:Je,summary:I(ct,{networkFee:Ve[3],exFee:Ve[4]})}}let qe=await ke(s,{address:we,abi:Ge,functionName:"getAmountSwapBridgeIn",args:[BigInt(d.to.chainId),te(n,d.from.address),te(n,z.toToken),z.fee||ye,Xe(r.toAmount)],chainId:d.from.chainId}),Ze=ve(qe[1]),at={...r,fromAmount:Ze};return{fromAmount:Ze,summary:I(at,{networkFee:qe[3],exFee:qe[4]})}}let ne=d.type==="bridge-swap"?Oe(d,"last"):Oe(d,"first");if(!ne)return{error:"Swap route is not available."};let G=await se({path:d,step:ne,amount:h,source:r.lastChangedBy});if(r.lastChangedBy==="from"){let z={...r,toAmount:G.amount};return{toAmount:G.amount,summary:wt({input:z,path:G.path,gasInfo:c,liquidity:g,enrichedTokens:k})}}let Be={...r,fromAmount:G.amount};return{fromAmount:G.amount,summary:wt({input:Be,path:G.path,gasInfo:c,liquidity:g,enrichedTokens:k})}},[U,le,k,n,y,v,se,s]),he=Q(async r=>{if(r.from.isNativeToken)return null;if(r.type==="swap"||r.type==="deposit-swap"||r.type==="swap-withdraw")return K(r.from.chainId);if(r.type==="swap-bridge")return n.contracts.SWAP_BRIDGE_ROUTER;let a=r.steps.find(u=>u.type==="bridge");return a?.bridgeAddress?a.bridgeAddress:null},[n.contracts.SWAP_BRIDGE_ROUTER,K]),Pe=Q(async r=>{if(!t)throw new Error("Wallet is not connected.");let a=X(r.fromToken),u=X(r.toToken),d=y(a,u);if(!d)throw new Error("Route is not available.");if(!We(d.type)&&d.type!=="swap-bridge"||d.from.isNativeToken)return null;let h=ue(r.fromAmount);if(h<=0n)return null;let R=await he(d);return!R||await ke(s,{address:d.from.address,abi:gt,functionName:"allowance",args:[t,R],chainId:d.from.chainId})>=h?null:{token:r.fromToken,tokenAddress:d.from.address,spenderAddress:R,amount:r.fromAmount}},[y,he,s,t]),J=Q(async(r,a)=>{let u=ue(a.amount||r.fromAmount);if(u<=0n)throw new Error("Approval amount is empty.");await j(a.token.chainId);let d=await Se(s,{address:a.tokenAddress,abi:gt,functionName:"approve",args:[a.spenderAddress,u],chainId:a.token.chainId});await co(s,{hash:d,chainId:a.token.chainId})},[j,s]),me=Q(async(r,a)=>{if(!t)throw new Error("Wallet is not connected.");let u=Oe(a,"first");if(!u)throw new Error("Swap route is not available.");let d=ue(r.fromAmount),h=ue(r.toAmount);if(d<=0n)throw new Error("Bridge amount is empty.");if(h<=0n)throw new Error("Bridge quote is not ready.");await j(u.chain);let R=await K(u.chain),c=bt(h,r.slippage),g=a.type==="swap-withdraw"?Qt:t,I={tokenIn:te(n,u.fromToken),tokenOut:te(n,u.toToken),fee:u.fee||ye,recipient:g,deadline:yt(),amountIn:d,amountOutMinimum:c,sqrtPriceLimitX96:0n},C;if(a.type==="swap-withdraw"){let E=je({abi:Ie,functionName:"exactInputSingle",args:[I]}),ne=je({abi:Ie,functionName:"unwrapWETH9",args:[c,t]});C=await Se(s,{address:R,abi:Ie,functionName:"multicall",args:[[E,ne]],chainId:u.chain})}else if(a.type==="deposit-swap"){let E=je({abi:Ie,functionName:"exactInputSingle",args:[I]}),ne=je({abi:Ie,functionName:"refundETH",args:[]});C=await Se(s,{address:R,abi:Ie,functionName:"multicall",args:[[E,ne]],value:d,chainId:u.chain})}else C=await Se(s,{address:R,abi:Ie,functionName:"exactInputSingle",args:[I],chainId:u.chain});return{txHash:C,fromToken:r.fromToken,toToken:r.toToken,fromAmount:r.fromAmount,toAmount:r.toAmount}},[j,n,K,s,t]),V=Q(async(r,a)=>{if(!t)throw new Error("Wallet is not connected.");let u=Oe(a,"first");if(!u)throw new Error("Swap bridge route is not available.");let d=ue(r.fromAmount),h=ue(r.toAmount);if(d<=0n)throw new Error("Bridge amount is empty.");if(h<=0n)throw new Error("Bridge quote is not ready.");await j(a.from.chainId);let R=n.contracts.SWAP_BRIDGE_ROUTER,c=yt(),g={toChainID:BigInt(a.to.chainId),recipient:t,extraData:"0x"},I={tokenIn:te(n,a.from.address),tokenOut:te(n,u.toToken),fee:u.fee||ye,sqrtPriceLimitX96:0n,bridgeParams:g},C;if(r.lastChangedBy==="to"){let E={...I,amountOut:h,amountInMaximum:bo(d,r.slippage)};C=await Se(s,{address:R,abi:Ge,functionName:"swapBridgeExactOutputSingle",args:[E,c],value:a.from.isNativeToken?E.amountInMaximum:void 0,chainId:a.from.chainId})}else{let E={...I,amountIn:d,amountOutMinimum:bt(d,r.slippage)};C=await Se(s,{address:R,abi:Ge,functionName:"swapBridgeExactInputSingle",args:[E,c],value:a.from.isNativeToken?d:void 0,chainId:a.from.chainId})}return{txHash:C,fromToken:r.fromToken,toToken:r.toToken,fromAmount:r.fromAmount,toAmount:r.toAmount}},[j,n,s,t]),ae=Q(async(r,a)=>{if(!t)throw new Error("Wallet is not connected.");let u=a.steps.find(we=>we.type==="bridge"),d=Oe(a,"last");if(!u?.bridgeAddress||!d)throw new Error("Bridge swap route is not available.");let h=ue(r.fromAmount),R=ue(r.toAmount);if(h<=0n)throw new Error("Bridge amount is empty.");if(R<=0n)throw new Error("Bridge quote is not ready.");let c=await v(a),g=$e(c?.gasFee??c?.gas_fee),I=qt(h,c?.exFeeRate??c?.ex_fee_rate),C=await K(a.to.chainId);await j(a.from.chainId);let E=yt(),ne=bt(R,r.slippage),G=je({abi:Ie,functionName:"exactInputSingle",args:[{tokenIn:te(n,d.fromToken),tokenOut:te(n,d.toToken),fee:d.fee||ye,recipient:t,deadline:E,amountIn:h,amountOutMinimum:ne,sqrtPriceLimitX96:0n}]}),Be=`${C}${G.slice(2)}`;return{txHash:await Se(s,{address:u.bridgeAddress,abi:Ut,functionName:"bridgeToken",args:[BigInt(a.to.chainId),a.from.address,t,h,g,I,Be],value:a.from.isNativeToken?h+I+g:void 0,chainId:a.from.chainId}),fromToken:r.fromToken,toToken:r.toToken,fromAmount:r.fromAmount,toAmount:r.toAmount}},[j,n,v,K,s,t]),Re=Q(async(r,a)=>{if(!t)throw new Error("Wallet is not connected.");let u=a.steps.find(I=>I.type==="bridge");if(!u?.bridgeAddress)throw new Error("Bridge route is not available.");let d=ue(r.fromAmount);if(d<=0n)throw new Error("Bridge amount is empty.");let h=await v(a),R=$e(h?.gasFee??h?.gas_fee),c=qt(d,h?.exFeeRate??h?.ex_fee_rate);return await j(a.from.chainId),{txHash:await Se(s,{address:u.bridgeAddress,abi:Ut,functionName:"bridgeToken",args:[BigInt(a.to.chainId),a.from.address,t,d,R,c,"0x"],value:a.from.isNativeToken?d+c+R:void 0,chainId:a.from.chainId}),fromToken:r.fromToken,toToken:r.toToken,fromAmount:r.fromAmount,toAmount:r.toAmount}},[j,v,s,t]),Le=Q(async r=>{let a=X(r.fromToken),u=X(r.toToken),d=y(a,u);if(!d)throw new Error("Route is not available.");let h=We(d.type)?me:d.type==="swap-bridge"?V:d.type==="bridge-swap"?ae:d.type==="bridge"?Re:null;if(!h)throw new Error("This bridge route is not supported yet.");return{...await h(r,d),pathType:d.type,routeTokens:Go(d,k)}},[k,y,me,V,ae,Re]);return{bridgeTokens:B,bridgeHistory:Z,getBridgeApproval:Pe,approveBridge:J,getBridgeQuote:ie,getBridgeToTokens:_,submitBridge:Le,isLoading:f.isLoading||p.isLoading||S.isLoading||w.isLoading||l.some(r=>r.isLoading)}}import{useEffect as Jt,useRef as $o,useState as en}from"react";import{useAccount as qo}from"wagmi";function Tt(e){let{address:t,connector:o}=qo(),{currentWallet:s}=fe(),n=e?.walletId!==void 0?e.walletId:s,i=e?.connector!==void 0?e.connector:o,m=e?.address!==void 0?e.address:t,[f,p]=en({loginType:null,accountName:null,accounts:[],isResolved:!1}),x=$o(new Map),[T,S]=en(0);return Jt(()=>{let w=!1;if(n!=="cross_embedded")return p({loginType:null,accountName:null,accounts:[],isResolved:!0}),()=>{w=!0};if(!i)return p({loginType:null,accountName:null,accounts:[],isResolved:!1}),()=>{w=!0};p(k=>({...k,isResolved:!1}));let l=20,b=300,A=async()=>{if(typeof i.getProvider!="function")return"retry";let k;try{k=await i.getProvider()}catch{return"retry"}let y=k?.sdk;if(!y)return"giveup";try{let _=y.getRNBridgeActiveWallet?.(),re=_?.walletName?.trim();_&&re&&x.current.set(_.address.toLowerCase(),re)}catch{}let[P,W]=await Promise.all([y.getUserInfo?.().catch(()=>null)??null,y.getAddresses?.().catch(()=>null)??null]);if(w)return"done";let q=P?.loginType,Z=q==="google"||q==="apple"?q:null;if(!Z)return"retry";let U=m?.toLowerCase(),F=U&&Array.isArray(W)?W.find(_=>_.address.toLowerCase()===U):null,O=Array.isArray(W)?W.filter(_=>/^0x[a-fA-F0-9]{40}$/.test(_.address)).map(_=>({address:_.address.toLowerCase(),...Number.isFinite(_.index)?{index:_.index}:{},..._.name?.trim()?{name:_.name.trim()}:{}})):[],D=U?x.current.get(U)?.trim():void 0,le=!F&&U&&/^0x[a-fA-F0-9]{40}$/.test(U)?[...O,{address:U,index:O.length,...D?{name:D}:{}}]:O,B=D||F?.name?.trim()||(typeof F?.index=="number"?`Account ${F.index+1}`:m?`${m.slice(0,6)}\u2026${m.slice(-4)}`:null);return p({loginType:Z,accountName:B,accounts:le,isResolved:!0}),"done"};return(async()=>{for(let k=0;k<l;k++){if(w)return;let y=await A();if(y==="done")return;if(y==="giveup"){w||p({loginType:null,accountName:null,accounts:[],isResolved:!0});return}await new Promise(P=>setTimeout(P,b))}w||p({loginType:null,accountName:null,accounts:[],isResolved:!0})})(),()=>{w=!0}},[n,i,m,T]),Jt(()=>{if(n!=="cross_embedded"||!i||typeof i.getProvider!="function")return;let w=!1,l;return(async()=>{let b;try{b=await i.getProvider()}catch{return}if(w)return;let A=b?.sdk;A?.on&&(l=A.on("addressChanged",({address:k,walletName:y})=>{let P=y?.trim();P&&(x.current.set(k.toLowerCase(),P),S(W=>W+1))}))})(),()=>{w=!0,l?.()}},[n,i]),f}import{Fragment as on,jsx as Y,jsxs as Ne}from"react/jsx-runtime";var or=[{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"}]}],rr={google:{name:"Google",iconUrl:sn,connectorId:Ae.CROSSx},apple:{name:"Apple",iconUrl:vt,connectorId:Ae.CROSSx},cross:{name:"CROSSx",iconUrl:It,connectorId:Ae.CROSSx},metamask:{name:"MetaMask",iconUrl:an,connectorId:Ae.MetaMask},binance:{name:"Binance Wallet",iconUrl:rn,connectorId:Ae.Binance}};function sr(e){switch(e){case"cross_embedded":return Ae.CROSSx;case"metamask":return Ae.MetaMask;case"binance":return Ae.Binance;default:return}}function ir(e,t){switch(e){case"cross_embedded":return t==="google"?{name:"Google",iconUrl:sn}:t==="apple"?{name:"Apple",iconUrl:vt}:{name:"CROSSx",iconUrl:It};case"cross_wallet":return{name:"CROSSx Wallet",iconUrl:It};case"cross_extension":return{name:"CROSSx Extension",iconUrl:nr};case"metamask":return{name:"MetaMask",iconUrl:an};case"binance":return{name:"Binance Wallet",iconUrl:rn};default:return null}}function ar({label:e="Connect Wallet",className:t,style:o,walletInfoStyle:s,user:n,enablePortfolio:i,portfolio:m,theme:f,accountName:p,connectorId:x,showPortfolio:T,sendAccounts:S,getTransactionReceipt:w,sendTransaction:l,estimateGas:b,onDisconnect:A,onSelectWallet:k,onBuy:y,onRampRedirectUrl:P,bridgeTokens:W,bridgeHistory:q,getBridgeQuote:Z,getBridgeToTokens:U,getBridgeApproval:F,approveBridge:O,submitBridge:D,showBalance:le=!0,env:v,...B}){let{address:_,isConnected:re,connector:j,chain:K}=zo(),se=jo(),ie=Qo(),{switchChainAsync:he}=Yo(),{sendTransactionAsync:Pe}=Xo(),{connectWallet:J,disconnect:me,selectWallet:V,currentWallet:ae,isConnecting:Re}=fe(),Le=Qe(),r=f??Le?.mode??"dark",a=it(()=>Jo(v),[v]),u=n?.address??_,d=n?rr[n.provider]:null,{loginType:h,accountName:R,accounts:c}=Tt({walletId:ae,connector:j,address:u}),g=it(()=>d?{name:d.name,iconUrl:d.iconUrl}:ir(ae,h),[d,ae,h]),I=p??n?.name??R??void 0,C=d?d.connectorId:sr(ae),E=x??C,ne=m??T??!!i,G=xt({env:a,walletAddress:u,enabled:re&&!!u&&le}),Be=W??G.bridgeTokens,z=q??G.bridgeHistory,we=Z??G.getBridgeQuote,qe=U??G.getBridgeToTokens,Ze=F??G.getBridgeApproval,at=O??G.approveBridge,Ve=D??G.submitBridge,Je=De(()=>{J().catch(N=>{console.error("[crossx-kit] connectWallet error:",N)})},[J]),ct=De(()=>{me()},[me]),pn=A??ct,Ce=er(),{eligibility:mn}=tr({network:K?String(K.id):void 0}),et=mn?.allowed===!0,fn=it(()=>{if(y)return y;if(!(!Ce||!K||!et))return()=>{Ce.open({crypto:K.nativeCurrency?.symbol??"USDT",network:String(K.id),...P?{redirectUrl:P}:{}}).catch(N=>{console.warn("[crossx-kit] onramp open failed:",N)})}},[y,Ce,K,et,P]),At=Ho();Vo(()=>{if(Ce?.onStatus)return Ce.onStatus(()=>{At.invalidateQueries()})},[Ce,At]);let gn=it(()=>{if(!y&&!(!Ce||!K)&&!et)return"On-ramp is not available in your region."},[y,Ce,K,et]),bn=n?n.provider==="google"||n.provider==="apple":ae==="cross_embedded",yn=De(()=>{V().catch(N=>{console.error("[crossx-kit] selectWallet error:",N)})},[V]),Pt=k??(bn?yn:void 0),hn=De(async({hash:N,chainId:ee})=>{let ce=tn(se,ee?{chainId:ee}:void 0);if(!ce)return null;try{return await ce.getTransactionReceipt({hash:N})}catch{return null}},[se]),wn=De(async N=>{N.chainId!==void 0&&N.chainId!==ie&&await he({chainId:N.chainId});let ce=N.chainId===56||N.chainId===97?{...N,type:"legacy"}:N;return(l??Pe)(ce)},[l,Pe,ie,he]),Cn=ne?wn:l,xn=De(async N=>{let ee=N.chainId??ie,ce=tn(se,ee?{chainId:ee}:void 0);if(!ce)throw new Error(`publicClient for chainId ${ee??"unknown"} is not available \u2014 register the chain in createCrossxConfig({ networks }).`);let _e=ee===56||ee===97,[He,Fe]=await Promise.all([ce.estimateGas({account:N.from,to:N.to,value:N.value,data:N.data}),(async()=>{if(_e)return{maxFeePerGas:void 0,maxPriorityFeePerGas:void 0,gasPrice:await ce.getGasPrice()};try{let de=await ce.estimateFeesPerGas();return{maxFeePerGas:de.maxFeePerGas,maxPriorityFeePerGas:de.maxPriorityFeePerGas,gasPrice:void 0}}catch{return{maxFeePerGas:void 0,maxPriorityFeePerGas:void 0,gasPrice:await ce.getGasPrice()}}})()]);return{gasLimit:He,maxFeePerGas:Fe.maxFeePerGas,maxPriorityFeePerGas:Fe.maxPriorityFeePerGas,gasPrice:Fe.gasPrice}},[se,ie]),Tn=b??xn,kn=De(async N=>{let ee={};if(!_||N.length===0)return ee;let ce=N.flatMap(He=>{let de={address:He,abi:or,chainId:ie};return[{...de,functionName:"balanceOf",args:[_]},{...de,functionName:"totalSupply"},{...de,functionName:"decimals"}]}),_e;try{_e=await Zo(se,{contracts:ce,allowFailure:!0})}catch{return ee}return N.forEach((He,Fe)=>{let de=Fe*3,dt=_e[de],lt=_e[de+1],ut=_e[de+2];!dt||dt.status!=="success"||(ee[He.toLowerCase()]={balance:dt.result,totalSupply:lt&&lt.status==="success"?lt.result:void 0,decimals:ut&&ut.status==="success"?Number(ut.result):void 0})}),ee},[se,_,ie]),Rt=!Pt,Bt=t?`cb-button ${t}`:"cb-button",Sn=t?`cb-pill ${t}`:"cb-pill";return Re&&!re?Ne(on,{children:[Y("style",{children:St}),Ne("button",{type:"button",disabled:!0,className:Bt,style:o,"aria-busy":"true",children:[Y("span",{className:"cb-spinner","aria-hidden":"true"}),Y("span",{className:"cb-button-label",children:"Connecting..."})]})]}):re&&u?Ne("span",{"data-crossx-wallet-info":Rt?"external":"embedded",children:[Y("style",{children:St}),Rt&&Y("style",{children:dr}),Ne(kt,{...B,env:a,theme:r,showBalance:le,walletAddress:u,accountName:I,sendAccounts:S??c,connectorId:E,showPortfolio:ne,onDisconnect:pn,onSelectWallet:Pt,onBuy:fn,onBuyDisabledMessage:gn,sendTransaction:Cn,getTransactionReceipt:w??hn,estimateGas:Tn,lpBalanceReader:kn,bridgeTokens:Be,bridgeHistory:z,getBridgeQuote:we,getBridgeToTokens:qe,getBridgeApproval:Ze,approveBridge:at,submitBridge:Ve,style:s,children:[Y(kt.Trigger,{asChild:!0,children:Ne("button",{type:"button",className:Sn,style:o,"aria-label":`Connected with ${g?.name??"wallet"}: ${nn(u)}`,children:[g?.iconUrl?Y("img",{src:g.iconUrl,alt:"",width:20,height:20,className:"cb-pill-icon","data-provider":g.iconUrl===vt?"apple":void 0}):Y("span",{className:"cb-pill-icon-placeholder","aria-hidden":"true"}),Y("span",{className:"cb-pill-address",children:nn(u)})]})}),Y(kt.Content,{align:"end",sideOffset:8})]})]}):Ne(on,{children:[Y("style",{children:St}),Ne("button",{type:"button",onClick:Je,className:Bt,style:o,"aria-label":typeof e=="string"?e:"Connect Wallet",children:[Y(cr,{}),Y("span",{className:"cb-button-label",children:e})]})]})}function cr(){return Y("svg",{className:"cb-button-icon",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:Y("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 dr=`
2
+ [data-crossx-wallet-info="external"] .wi-select-wallet-btn {
3
+ display: none !important;
4
+ }
5
+ `;function nn(e){return`${e.slice(0,6)}...${e.slice(-4)}`}var St=`
6
+ .cb-button {
7
+ -webkit-font-smoothing: antialiased;
8
+ --cb-bg: var(--ds-accent-primary-default, #00D5AA);
9
+ --cb-bg-hover: var(--ds-accent-primary-high, #00a0a2);
10
+ --cb-color: var(--ds-accent-primary-on, #000);
11
+ --cb-border: none;
12
+ --cb-radius: 8px;
13
+ --cb-height: 36px;
14
+ --cb-padding: 0 16px;
15
+ --cb-font-family: Inter, system-ui, -apple-system, sans-serif;
16
+ --cb-font-size: 14px;
17
+ --cb-font-weight: 500;
18
+ --cb-gap: 8px;
19
+ --cb-transition: background-color 0.15s ease, transform 0.1s ease;
20
+ --cb-loading-opacity: 0.7;
21
+ --cb-press-scale: 0.95;
22
+ --cb-spinner-size: 14px;
23
+ --cb-spinner-thumb: currentColor;
24
+ --cb-spinner-track: color-mix(in srgb, currentColor 20%, transparent);
25
+ --cb-icon-size: 18px;
26
+
27
+ display: inline-flex;
28
+ align-items: center;
29
+ justify-content: center;
30
+ box-sizing: border-box;
31
+ height: var(--cb-height);
32
+ gap: var(--cb-gap);
33
+ padding: var(--cb-padding);
34
+ border-radius: var(--cb-radius);
35
+ border: var(--cb-border);
36
+ background: var(--cb-bg);
37
+ color: var(--cb-color);
38
+ font-family: var(--cb-font-family);
39
+ font-size: var(--cb-font-size);
40
+ font-weight: var(--cb-font-weight);
41
+ cursor: pointer;
42
+ transition: var(--cb-transition);
43
+ }
44
+ .cb-button:hover:not(:disabled) { background: var(--cb-bg-hover); }
45
+ .cb-button:active:not(:disabled) { transform: scale(var(--cb-press-scale)); }
46
+ .cb-button:disabled, .cb-button[aria-busy="true"] {
47
+ cursor: default;
48
+ opacity: var(--cb-loading-opacity);
49
+ }
50
+ .cb-spinner {
51
+ display: inline-block;
52
+ width: var(--cb-spinner-size);
53
+ height: var(--cb-spinner-size);
54
+ border: 2px solid var(--cb-spinner-track);
55
+ border-top-color: var(--cb-spinner-thumb);
56
+ border-radius: 50%;
57
+ animation: cck-cb-spin 0.6s linear infinite;
58
+ flex-shrink: 0;
59
+ }
60
+ .cb-button-icon {
61
+ width: var(--cb-icon-size);
62
+ height: var(--cb-icon-size);
63
+ flex-shrink: 0;
64
+ }
65
+ .cb-button-label { white-space: nowrap; }
66
+ .cb-pill {
67
+ --cb-pill-bg: var(--ds-surface-default, #1e232e);
68
+ --cb-pill-bg-hover: var(--ds-surface-medium, #252b39);
69
+ --cb-pill-color: var(--ds-content-high, #ffffffd9);
70
+ --cb-pill-border: 1px solid var(--ds-border-default, #ffffff12);
71
+ --cb-pill-border-hover: 1px solid var(--ds-border-medium, #ffffff2e);
72
+ --cb-pill-radius: 8px;
73
+ --cb-pill-height: 36px;
74
+ --cb-pill-padding: 0 12px;
75
+ --cb-pill-press-scale: 0.95;
76
+ --cb-pill-font-family: Inter, system-ui, -apple-system, sans-serif;
77
+ --cb-pill-font-size: 14px;
78
+ --cb-pill-font-weight: 500;
79
+ --cb-pill-gap: 8px;
80
+ --cb-pill-icon-size: 20px;
81
+ --cb-pill-icon-placeholder-bg: var(--ds-surface-high, #2a2d3a);
82
+ --cb-pill-address-font: Inter, system-ui, -apple-system, sans-serif;
83
+ --cb-pill-address-font-size: 14px;
84
+ --cb-pill-address-letter-spacing: -0.01em;
85
+
86
+ display: inline-flex;
87
+ align-items: center;
88
+ box-sizing: border-box;
89
+ height: var(--cb-pill-height);
90
+ gap: var(--cb-pill-gap);
91
+ padding: var(--cb-pill-padding);
92
+ border-radius: var(--cb-pill-radius);
93
+ border: var(--cb-pill-border);
94
+ background: var(--cb-pill-bg);
95
+ color: var(--cb-pill-color);
96
+ font-family: var(--cb-pill-font-family);
97
+ font-size: var(--cb-pill-font-size);
98
+ font-weight: var(--cb-pill-font-weight);
99
+ cursor: pointer;
100
+ }
101
+ .cb-pill:hover,
102
+ .cb-pill[data-state="open"] { background: var(--cb-pill-bg-hover); border: var(--cb-pill-border-hover, 1px solid var(--ds-border-medium, #ffffff2e)); }
103
+ .cb-pill:active:not(:disabled) { transform: scale(var(--cb-pill-press-scale)); }
104
+ .cb-pill-icon {
105
+ width: var(--cb-pill-icon-size);
106
+ height: var(--cb-pill-icon-size);
107
+ border-radius: 50%;
108
+ object-fit: contain;
109
+ flex-shrink: 0;
110
+ background: transparent;
111
+ }
112
+ /* Apple is a monochrome black logomark in an <img> data URI (can't follow
113
+ theme via currentColor). Flip it to white in dark mode so it stays
114
+ visible on the dark pill; multicolor marks (Google/MetaMask/Binance/
115
+ CROSSx) are untouched. */
116
+ [data-theme="dark"] .cb-pill-icon[data-provider="apple"] {
117
+ filter: invert(1);
118
+ }
119
+ .cb-pill-icon-placeholder {
120
+ display: inline-block;
121
+ width: var(--cb-pill-icon-size);
122
+ height: var(--cb-pill-icon-size);
123
+ border-radius: 50%;
124
+ background: var(--cb-pill-icon-placeholder-bg);
125
+ flex-shrink: 0;
126
+ }
127
+ .cb-pill-address {
128
+ font-family: var(--cb-pill-address-font);
129
+ font-size: var(--cb-pill-address-font-size);
130
+ letter-spacing: var(--cb-pill-address-letter-spacing);
131
+ }
132
+ @media (max-width: 767.98px) {
133
+ .cb-button, .cb-pill {
134
+ width: 36px;
135
+ min-width: 36px;
136
+ padding: 0;
137
+ }
138
+ .cb-button-label, .cb-pill-address { display: none; }
139
+ }
140
+ @keyframes cck-cb-spin {
141
+ to { transform: rotate(360deg); }
142
+ }
143
+ `;import{useCallback as cn,useEffect as lr,useMemo as dn,useState as ur}from"react";import{detectWallets as ln,DEFAULT_WALLET_REGISTRY as un}from"@nexus-cross/connect-kit-wagmi";import{jsx as H,jsxs as pe}from"react/jsx-runtime";var pr=["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"],mr="Connect with one of our available wallet providers to continue.";function fr({open:e,onClose:t,onSelect:o,title:s="Connect Wallet",description:n=mr,troubleshootingTips:i=pr}){let{availableWallets:m}=fe(),[f,p]=ur({});lr(()=>{if(!e)return;let l=ln(un),b={};for(let k of l)k.installed!==void 0&&(b[k.id]=k.installed);p(b);let A=setTimeout(()=>{let k=ln(un),y={};for(let P of k)P.installed!==void 0&&(y[P.id]=P.installed);p(y)},1e3);return()=>clearTimeout(A)},[e]);let x=dn(()=>typeof navigator>"u"?!1:/Mobi|Android/i.test(navigator.userAgent),[]),T=dn(()=>x?m.filter(l=>l.type!=="extension"):m,[m,x]),S=cn(l=>{if(!f[l.walletId]&&l.installUrl&&l.type==="extension"){window.open(l.installUrl,"_blank");return}t(),o(l.walletId)},[t,o,f]),w=cn((l,b)=>{l.stopPropagation(),t(),window.open(b,"_blank")},[t]);return e?H("div",{style:L.overlay,onClick:t,children:pe("div",{style:L.modal,onClick:l=>l.stopPropagation(),children:[pe("div",{style:L.header,children:[H("h2",{style:L.title,children:s}),H("button",{type:"button",onClick:t,style:L.closeBtn,"aria-label":"Close",children:pe("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",children:[H("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),H("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),H("p",{style:L.desc,children:n}),H("div",{style:L.walletList,children:T.map(l=>{let b=f[l.walletId],A=b===!1&&l.type==="extension"&&!!l.installUrl;return pe("div",{style:L.walletGroup,children:[pe("button",{type:"button",onClick:()=>S(l),style:{...L.walletItem,...l.walletId==="cross_wallet"?L.walletItemAccent:{}},"aria-label":`Connect with ${l.name}`,children:[l.iconUrl?H("img",{src:l.iconUrl,alt:"",style:L.walletIcon}):H("div",{style:L.walletIconPlaceholder}),pe("div",{style:L.walletInfo,children:[pe("div",{style:L.walletNameRow,children:[H("span",{style:L.walletName,children:l.name}),b!==void 0&&H("span",{style:{...L.badge,...b?L.badgeInstalled:L.badgeNotInstalled},children:b?"Installed":"Not Installed"})]}),H("span",{style:L.walletDesc,children:A?"Extension not detected \u2014 click to install":l.type==="extension"?"Browser extension approval is required":l.walletId==="cross_wallet"?"App approval is required":l.walletId==="binance"?"Mobile app only \u2014 Add CROSS network first":b?"Connect with browser extension":"Scan QR code with app"})]})]}),l.guideUrl&&pe("button",{type:"button",onClick:k=>w(k,l.guideUrl),style:L.guideBtn,children:[H("span",{"aria-hidden":"true",children:"\u26A0\uFE0F"}),l.guideLabel??"Required Settings"]})]},l.walletId)})}),pe("div",{style:L.troubleshoot,children:[H("h3",{style:L.troubleshootTitle,children:"Wallet not detected?"}),H("ul",{style:L.troubleshootList,children:i.map(l=>pe("li",{style:L.troubleshootItem,children:[H("span",{style:L.troubleshootDot,"aria-hidden":"true"}),H("span",{children:l})]},l))})]})]})}):null}var M={surfaceBg:"var(--wi-surface-bg, #121212)",surfaceDefault:"var(--wi-surface-default, rgba(255,255,255,0.05))",surfaceSubtle:"var(--wi-surface-subtle, rgba(255,255,255,0.1))",borderDefault:"var(--wi-border-default, rgba(255,255,255,0.05))",textPrimary:"var(--wi-texticon-primary, #ffffff)",textSecondary:"var(--wi-texticon-secondary, rgba(255,255,255,0.7))",textTertiary:"var(--wi-texticon-tertiary, rgba(255,255,255,0.5))",primary:"var(--wi-primary, #019d92)",primarySoft:"var(--crossx-kit-primary-soft, rgba(1,157,146,0.15))",accentGradient:"var(--crossx-kit-accent-gradient, linear-gradient(113deg, rgba(255,255,255,0.05) 0%, rgba(1,157,146,0.12) 70%, rgba(255,255,255,0.05) 70%, rgba(1,157,146,0.12) 80%, rgba(255,255,255,0.05) 80%))",warningBg:"var(--crossx-kit-warning-bg, rgba(245,158,11,0.1))",warningBorder:"var(--crossx-kit-warning-border, rgba(245,158,11,0.25))",warningText:"var(--crossx-kit-warning-text, #fbbf24)"},L={overlay:{position:"fixed",inset:0,zIndex:1e4,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.6)",backdropFilter:"blur(4px)"},modal:{width:"100%",maxWidth:"420px",margin:"16px",background:M.surfaceBg,border:`1px solid ${M.borderDefault}`,borderRadius:"20px",overflow:"hidden"},header:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"20px 24px 0"},title:{fontSize:"18px",fontWeight:700,color:M.textPrimary,margin:0},closeBtn:{background:"none",border:"none",color:M.textTertiary,cursor:"pointer",padding:"4px",borderRadius:"8px",display:"flex",alignItems:"center",justifyContent:"center"},desc:{padding:"8px 24px 16px",fontSize:"13px",color:M.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:M.surfaceDefault},walletItem:{display:"flex",alignItems:"center",gap:"14px",width:"100%",padding:"14px",background:"transparent",border:"none",color:M.textPrimary,cursor:"pointer",textAlign:"left"},walletItemAccent:{background:M.accentGradient},walletIcon:{width:"40px",height:"40px",borderRadius:"10px",flexShrink:0},walletIconPlaceholder:{width:"40px",height:"40px",borderRadius:"10px",background:M.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:M.textPrimary},badge:{fontSize:"10px",fontWeight:600,padding:"2px 7px",borderRadius:"99px",lineHeight:1},badgeInstalled:{background:M.primarySoft,color:M.primary},badgeNotInstalled:{background:"rgba(255,255,255,0.05)",color:M.textTertiary},walletDesc:{fontSize:"11px",color:M.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 ${M.warningBorder}`,background:M.warningBg,color:M.warningText,fontWeight:600,fontSize:"13px",cursor:"pointer"},troubleshoot:{margin:"0 12px 16px",background:M.surfaceDefault,borderRadius:"12px",padding:"14px 16px"},troubleshootTitle:{fontSize:"12px",fontWeight:700,color:M.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:M.textSecondary,lineHeight:1.5},troubleshootDot:{flexShrink:0,width:"4px",height:"4px",marginTop:"6px",borderRadius:"50%",background:M.textSecondary}};import{useOnRamp as Is,useOnRampEligibility as vs,OnRampProvider as As}from"@nexus-cross/onramp/react";import{WalletInfo as Rs,ConnectorId as Bs}from"@nexus-cross/dapp-ui";import{AppLauncher as Es,AppLauncherTrigger as Os,AppLauncherContent as Ws,useGlobalMenu as Ds}from"@nexus-cross/dapp-ui";import{SkillsButton as Ls}from"@nexus-cross/dapp-ui";import{OnRampError as Ms}from"@nexus-cross/connect-kit-core";import{ConnectionStatus as Ks,formatBalance as Gs,formatWei as $s}from"@nexus-cross/connect-kit-core";_t();export{fe as a,Bn as b,Qe as c,mt as d,no as e,xt as f,Tt as g,ar as h,fr as i,Is as j,vs as k,As as l,Rs as m,Bs as n,Es as o,Os as p,Ws as q,Ds as r,Ls as s,Ms as t,Ks as u,Gs as v,$s as w};
package/dist/client.d.ts CHANGED
@@ -1,4 +1,46 @@
1
- export * from './index.js';
2
- export { createConnectKitConfig } from './config/createConnectKitConfig.js';
3
- export type { ConnectKitEnvironmentInput, ConnectKitWalletPreset, CreateConnectKitConfigOptions, } from './config/createConnectKitConfig.js';
4
- //# sourceMappingURL=client.d.ts.map
1
+ export { ConnectButton, ConnectButtonProps, CrossConnectKitContextValue, CrossConnectKitProvider, CrossConnectKitProviderProps, CrossConnectKitThemeContextValue, CrossConnectModal, CrossConnectModalProps, CrossxEmbeddedInfo, OtherWalletsModal, OtherWalletsModalProps, WalletProvider, WalletUser, useCrossConnectKit, useCrossConnectKitTheme, useCrossdBridgeAdapter, useCrossxEmbeddedInfo, useOptionalCrossConnectKitTheme } from './index.js';
2
+ export { OnRampProvider, OnRampProviderProps, UseOnRampEligibilityOptions, UseOnRampEligibilityResult, UseOnRampOptions, UseOnRampResult, useOnRamp, useOnRampEligibility } from '@nexus-cross/onramp/react';
3
+ export { AppLauncher, AppLauncherContent, AppLauncherContentProps, AppLauncherProps, AppLauncherTrigger, AppLauncherTriggerProps, AppLauncherTriggerStyle, ConnectButtonStyle, ConnectorId, GlobalMenu, GlobalMenuItem, GlobalMenuItemUrl, SendTransactionArgs, SendTransactionFn, SkillsButton, SkillsButtonProps, SkillsButtonStyle, WalletInfo, WalletInfoContentProps, WalletInfoProps, WalletInfoStyle, WalletInfoTriggerProps, useGlobalMenu } from '@nexus-cross/dapp-ui';
4
+ import { AppMetadata, NetworkConfig, WalletId } from '@nexus-cross/connect-kit-core';
5
+ export { Account, ChainBalance, ColorOverrides, ConnectionStatus, ConnectorType, CrossConnectKitConfig, ModalView, OnRampDisallowReason, OnRampEligibility, OnRampError, OnRampErrorCode, OnRampOpenParams, OnRampProviderId, OnRampSession, OnRampStatus, OnRampStatusEvent, Theme, ThemeMode, ThemeTokens, WalletDescriptor, WalletId, WalletState, formatBalance, formatWei } from '@nexus-cross/connect-kit-core';
6
+ import { CreateCrossxConfigOptions, CrossxConfig } from '@nexus-cross/connect-kit-wagmi';
7
+ export { ConnectorEntry, ConnectorRegistry } from '@nexus-cross/connect-kit-wagmi';
8
+ import { ToNexusAdapterOptions } from '@nexus-cross/connect-kit-wagmi/to-nexus';
9
+ import { ReownAdapterOptions } from '@nexus-cross/connect-kit-wagmi/reown';
10
+ import 'react/jsx-runtime';
11
+ import 'react';
12
+ import 'wagmi';
13
+
14
+ type ConnectKitWalletPreset = 'all' | 'cross-only' | 'external-only';
15
+ type ConnectKitEnvironmentInput = 'development' | 'dev' | 'staging' | 'stage' | 'stg' | 'production' | 'prod' | 'prd';
16
+ interface CreateConnectKitConfigOptions extends Omit<CreateCrossxConfigOptions, 'appMetadata' | 'networks' | 'defaultNetwork' | 'wallets' | 'crossProvider' | 'reownProvider' | 'embeddedConnectorFactory'> {
17
+ /**
18
+ * Short alias for `appMetadata`. When both are provided,
19
+ * `appMetadata` wins for backward familiarity.
20
+ */
21
+ readonly app?: AppMetadata;
22
+ readonly appMetadata?: AppMetadata;
23
+ /**
24
+ * Defaults from `NEXT_PUBLIC_CROSSX_ENVIRONMENT` / `VITE_CROSSX_ENVIRONMENT`:
25
+ * production => CROSS/BSC mainnet, staging/development => testnets.
26
+ */
27
+ readonly networks?: readonly NetworkConfig[];
28
+ readonly defaultNetwork?: NetworkConfig;
29
+ /**
30
+ * `all` wires CROSSx + Reown wallets, `cross-only` omits MetaMask/Binance,
31
+ * `external-only` omits CROSSx wallets. Pass an array for the underlying
32
+ * `CrossConnectKitConfig.wallets` allowlist.
33
+ */
34
+ readonly wallets?: ConnectKitWalletPreset | readonly WalletId[];
35
+ /** Enable the embedded social wallet on the CROSS side. Default: true. */
36
+ readonly embedded?: boolean;
37
+ /** Override environment detection for default network presets. */
38
+ readonly environment?: ConnectKitEnvironmentInput;
39
+ /** Advanced adapter options. Set to `false` to disable CROSSx Wallet/Extension. */
40
+ readonly toNexus?: false | ToNexusAdapterOptions;
41
+ /** Advanced adapter options. Set to `false` to disable Reown wallets. */
42
+ readonly reown?: false | ReownAdapterOptions;
43
+ }
44
+ declare function createConnectKitConfig(options: CreateConnectKitConfigOptions): CrossxConfig;
45
+
46
+ export { type ConnectKitEnvironmentInput, type ConnectKitWalletPreset, type CreateConnectKitConfigOptions, createConnectKitConfig };
package/dist/client.js CHANGED
@@ -1,3 +1 @@
1
- export * from './index.js';
2
- export { createConnectKitConfig } from './config/createConnectKitConfig.js';
3
- //# sourceMappingURL=client.js.map
1
+ import{a as S,b as _,c as V,d as X,e as W,f as h,g as j,h as F,i as L,j as B,k as U,l as q,m as z,n as D,o as G,p as H,q as J,r as Q,s as Y,t as Z,u as $,v as ee,w as ne}from"./chunk-ZL2BHNN6.js";import{bscMainnetNetwork as v,bscTestnetNetwork as x,createCrossxConfig as E,crossMainnetNetwork as O,crossTestnetNetwork as k}from"@nexus-cross/connect-kit-wagmi";import{toNexusAdapter as M}from"@nexus-cross/connect-kit-wagmi/to-nexus";import{reownAdapter as P}from"@nexus-cross/connect-kit-wagmi/reown";import{embeddedConnectorFactory as A}from"@nexus-cross/connect-kit-wagmi/embedded";function d(e){try{return import.meta.env?.[e]}catch{return}}function p(e){if(!(typeof process>"u"))return process.env?.[e]}function I(){return d("VITE_CROSSX_ENVIRONMENT")??d("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??p("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??p("CROSSX_ENVIRONMENT")}function K(e){switch(e?.toLowerCase()){case"dev":case"development":return"development";case"stage":case"staging":case"stg":return"staging";default:return"production"}}function R(e){return e==="production"?[O,v]:[k,x]}function T(){return{name:"CROSSx DApp",url:typeof window<"u"&&window.location?.origin?window.location.origin:"https://example.com"}}function b(e){let{app:c,appMetadata:l,networks:u,defaultNetwork:f,wallets:n,embedded:C=!0,environment:w,toNexus:t,reown:o,...r}=e,g=K(w??I()),i=u??R(g),a=Array.isArray(n)?null:n??"all",s=a!=="external-only"&&t!==!1,m=a!=="cross-only"&&o!==!1&&!!r.reownProjectId,y=t===!1?void 0:t,N=o===!1?void 0:o;if(a==="external-only"&&!r.reownProjectId)throw new Error('[crossx-kit] createConnectKitConfig({ wallets: "external-only" }) requires `reownProjectId`.');return E({...r,appMetadata:l??c??T(),networks:i,defaultNetwork:f??i[0],...Array.isArray(n)?{wallets:n}:{},...s?{crossProvider:M(y)}:{},...m?{reownProvider:P(N)}:{},...s&&C?{embeddedConnectorFactory:A}:{}})}export{G as AppLauncher,J as AppLauncherContent,H as AppLauncherTrigger,F as ConnectButton,$ as ConnectionStatus,D as ConnectorId,W as CrossConnectKitProvider,X as CrossConnectModal,Z as OnRampError,q as OnRampProvider,L as OtherWalletsModal,Y as SkillsButton,z as WalletInfo,b as createConnectKitConfig,ee as formatBalance,ne as formatWei,S as useCrossConnectKit,_ as useCrossConnectKitTheme,h as useCrossdBridgeAdapter,j as useCrossxEmbeddedInfo,Q as useGlobalMenu,B as useOnRamp,U as useOnRampEligibility,V as useOptionalCrossConnectKitTheme};