@naculus/connect-appkit-react 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/api-extractor.json +21 -0
- package/dist/client.cjs +2 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/package.json +39 -0
- package/src/chain-abstraction/index.ts +8 -0
- package/src/chain-abstraction/useCompareCosts.ts +137 -0
- package/src/chain-abstraction/useExecuteRoute.ts +129 -0
- package/src/chain-abstraction/useRouteQuote.ts +168 -0
- package/src/client.test.ts +242 -0
- package/src/client.ts +265 -0
- package/src/hooks/useAccount.test.ts +67 -0
- package/src/hooks/useAccount.ts +37 -0
- package/src/hooks/useBalance.test.ts +459 -0
- package/src/hooks/useBalance.ts +170 -0
- package/src/hooks/useChain.test.ts +160 -0
- package/src/hooks/useChain.ts +53 -0
- package/src/hooks/useConnect.test.ts +112 -0
- package/src/hooks/useConnect.ts +29 -0
- package/src/hooks/useDisconnect.test.ts +75 -0
- package/src/hooks/useDisconnect.ts +32 -0
- package/src/hooks/useERC20Allowance.ts +93 -0
- package/src/hooks/useERC20Approve.ts +220 -0
- package/src/hooks/useERC20Transfer.ts +134 -0
- package/src/hooks/useERC20TransferSimulation.ts +147 -0
- package/src/hooks/useEmbeddedWallet.test.ts +266 -0
- package/src/hooks/useEmbeddedWallet.ts +181 -0
- package/src/hooks/useLastTx.test.ts +117 -0
- package/src/hooks/useLastTx.ts +73 -0
- package/src/hooks/useLookupAddress.ts +131 -0
- package/src/hooks/useNotification.ts +308 -0
- package/src/hooks/useResolveName.ts +128 -0
- package/src/hooks/useSIWxLogin.test.ts +307 -0
- package/src/hooks/useSIWxLogin.ts +163 -0
- package/src/hooks/useSIWxSession.test.ts +481 -0
- package/src/hooks/useSIWxSession.ts +290 -0
- package/src/hooks/useSendCalls.ts +103 -0
- package/src/hooks/useSendTransaction.test.ts +175 -0
- package/src/hooks/useSendTransaction.ts +80 -0
- package/src/hooks/useSendUserOperation.ts +313 -0
- package/src/hooks/useSession.ts +96 -0
- package/src/hooks/useSessionKeys.ts +356 -0
- package/src/hooks/useSignInWithEthereum.test.ts +224 -0
- package/src/hooks/useSignInWithEthereum.ts +46 -0
- package/src/hooks/useSignInWithX.test.ts +210 -0
- package/src/hooks/useSignInWithX.ts +141 -0
- package/src/hooks/useSignMessage.test.ts +151 -0
- package/src/hooks/useSignMessage.ts +65 -0
- package/src/hooks/useSimulateTransfer.ts +165 -0
- package/src/hooks/useSiwxAuthSession.test.ts +456 -0
- package/src/hooks/useSiwxAuthSession.ts +163 -0
- package/src/hooks/useSmartAccount.ts +194 -0
- package/src/hooks/useSwitchChain.ts +68 -0
- package/src/hooks/useTokenBalance.test.ts +337 -0
- package/src/hooks/useTokenBalance.ts +210 -0
- package/src/hooks/useTransactionSimulation.ts +401 -0
- package/src/hooks/useTxHistory.test.ts +108 -0
- package/src/hooks/useTxHistory.ts +83 -0
- package/src/hooks/useTxMonitor.test.ts +127 -0
- package/src/hooks/useTxMonitor.ts +178 -0
- package/src/hooks/useUserOpStatus.ts +245 -0
- package/src/hooks/useValidateDestination.test.ts +96 -0
- package/src/hooks/useValidateDestination.ts +72 -0
- package/src/hooks/useViemClient.test.ts +155 -0
- package/src/hooks/useViemClient.ts +65 -0
- package/src/hooks/useWallet.test.ts +133 -0
- package/src/hooks/useWallet.ts +39 -0
- package/src/hooks/useWeb3ErrorHandler.ts +102 -0
- package/src/index.ts +186 -0
- package/src/provider/Web3ConnectProvider.test.tsx +178 -0
- package/src/provider/Web3ConnectProvider.tsx +530 -0
- package/src/token-list/TokenSelector.tsx +351 -0
- package/src/token-list/defaults.ts +39 -0
- package/src/token-list/index.ts +14 -0
- package/src/token-list/useTokenList.ts +119 -0
- package/src/token-list/useTokenSearch.ts +99 -0
- package/src/types/index.ts +99 -0
- package/src/utils/chains.ts +115 -0
- package/src/utils/errorMessages.ts +142 -0
- package/src/utils/i18n.ts +90 -0
- package/src/wc-generated/components.ts +377 -0
- package/test/setup.ts +17 -0
- package/test/test-utils.tsx +78 -0
- package/tsup.config.ts +18 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Naculus
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
|
|
3
|
+
"mainEntryPointFilePath": "<projectFolder>/packages/react/dist/index.d.ts",
|
|
4
|
+
"bundledPackages": [],
|
|
5
|
+
"compiler": {
|
|
6
|
+
"overrideTsconfig": {
|
|
7
|
+
"skipLibCheck": true
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
"dtsRollup": {
|
|
11
|
+
"enabled": true,
|
|
12
|
+
"untrimmedFilePath": "<projectFolder>/packages/react/dist/connect-react.d.ts"
|
|
13
|
+
},
|
|
14
|
+
"apiReport": {
|
|
15
|
+
"enabled": true,
|
|
16
|
+
"reportFileName": "connect-react.api.md",
|
|
17
|
+
"reportFolder": "<projectFolder>/packages/react/etc/"
|
|
18
|
+
},
|
|
19
|
+
"docModel": { "enabled": false },
|
|
20
|
+
"tsdocMetadata": { "enabled": false }
|
|
21
|
+
}
|
package/dist/client.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var g=Object.create;var y=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var k=(o,t)=>{for(var a in t)y(o,a,{get:t[a],enumerable:!0})},p=(o,t,a,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of v(t))!P.call(o,l)&&l!==a&&y(o,l,{get:()=>t[l],enumerable:!(u=w(t,l))||u.enumerable});return o};var f=(o,t,a)=>(a=o!=null?g(S(o)):{},p(t||!o||!o.__esModule?y(a,"default",{value:o,enumerable:!0}):a,o)),W=o=>p(y({},"__esModule",{value:!0}),o);var _={};k(_,{clearClient:()=>U,createClient:()=>h,getClient:()=>E});module.exports=W(_);var b=require("@naculus/connector-walletconnect"),d=require("@naculus/connector-evm-injected"),i=require("@naculus/connect-core"),s=null;function h(o){if(s)return s;let t=(0,b.createWalletConnectConnector)({projectId:o.projectId,metadata:o.metadata}),a=null,u=null;o.enableEmbedded&&(u=import("@naculus/connector-embedded").then(e=>{a=e.createPocketConnector(),s&&s._setEmbeddedConnector(a)}).catch(e=>{i.logger.warn("react/client","Embedded wallet connector not available:",e),a=null}));let l=null,m=null;o.enablePasskeys&&(m=import("@naculus/connector-passkeys").then(e=>{l=e.createPasskeysConnector(),s&&s._setPasskeysConnector(l)}).catch(e=>{i.logger.warn("react/client","Passkeys connector not available:",e),l=null}));let r=null,c=null;return o.enableSolana&&(c=import("@naculus/connector-solana").then(e=>{let n=e.solanaConnector;o.solanaDefaultChain&&"configure"in n&&n.configure({defaultChain:o.solanaDefaultChain}),r=n,typeof window<"u"&&"startDiscovery"in n&&n.startDiscovery(),s&&s._setSolanaConnector(r)}).catch(e=>{i.logger.warn("react/client","Solana connector not available:",e),r=null})),typeof window<"u"&&d.eip6963Connector.startDiscovery(),s={connector:t,get embeddedConnector(){return a},get passkeysConnector(){return l},get solanaConnector(){return r},connect:()=>t.connect(),connectInjected:async e=>d.eip6963Connector.connect(e),connectEmbedded:async()=>{if(u&&await u,!a)throw new Error("Embedded wallet not enabled. Set enableEmbedded: true in config.");return a.connect()},connectPasskeys:async()=>{if(m&&await m,!l)throw new Error("Passkeys connector not enabled. Set enablePasskeys: true in config.");return l.connect()},startPairing:()=>t.startPairing(),completePairing:()=>t.completePairing(),signMessage:async(e,n)=>{if(e.id?.startsWith("eip6963-"))return d.eip6963Connector.signMessage(e,n);if(e.walletType==="passkeys"&&l)return l.signMessage(e,n);if(e.walletType==="solana"){if(c&&await c,r)return r.signMessage(e,n);throw new i.WalletError("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}return t.signMessage(e,n)},sendTransaction:async(e,n)=>{if(e.id?.startsWith("eip6963-"))return d.eip6963Connector.sendTransaction(e,n);if(e.walletType==="passkeys"&&l)return l.sendTransaction(e,n);if(e.walletType==="solana"){if(c&&await c,r)return r.sendTransaction(e,n);throw new i.WalletError("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}return t.sendTransaction(e,n)},sendCalls:async(e,n,C)=>{if(e.id?.startsWith("eip6963-"))return d.eip6963Connector.sendCalls(e,n,C);if(e.walletType==="passkeys"&&l)return l.sendCalls(e,n,C);if(e.walletType==="solana"){if(c&&await c,r)return r.sendCalls(e,n,C);throw new i.WalletError("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}if(e.walletType==="embedded"&&a&&a.sendCalls)return a.sendCalls(e,n,C);if(!t.sendCalls)throw new i.WalletError("method_not_allowed","sendCalls not supported by this connector");return t.sendCalls(e,n,C)},getCallsStatus:async(e,n)=>{if(e.id?.startsWith("eip6963-")&&d.eip6963Connector.getCallsStatus)return d.eip6963Connector.getCallsStatus(e,n);if(e.walletType==="passkeys"&&l?.getCallsStatus)return l.getCallsStatus(e,n);if(!t.getCallsStatus)throw new i.WalletError("method_not_allowed","getCallsStatus not supported by this connector");return t.getCallsStatus(e,n)},reconnect:async e=>e.walletType==="eip6963"?d.eip6963Connector.reconnect(e):e.walletType==="embedded"?a?a.reconnect(e):e:e.walletType==="solana"?e:t.reconnect(e),disconnect:async e=>{if(e.walletType==="solana"){if(c&&await c,r)return r.disconnect(e);throw new i.WalletError("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}return t.disconnect(e)},getAllConnectors:()=>{let e=[t];return a&&e.push(a),l&&e.push(l),r&&e.push(r),e},_setEmbeddedConnector:e=>{a=e},_setPasskeysConnector:e=>{l=e},_setSolanaConnector:e=>{r=e}},s}function E(){return s}function U(){s=null}0&&(module.exports={clearClient,createClient,getClient});
|
|
2
|
+
//# sourceMappingURL=client.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client.ts"],"sourcesContent":["import { WalletConnectConnector, createWalletConnectConnector } from \"@naculus/connector-walletconnect\";\nimport { eip6963Connector } from \"@naculus/connector-evm-injected\";\nimport { logger, WalletError } from \"@naculus/connect-core\";\nimport type { UniversalConnector, UniversalWalletSession, BatchCall, CallsStatus } from \"@naculus/connect-core\";\nimport type { PocketConnectorClass as EmbeddedWalletConnector } from \"@naculus/connector-embedded\";\nimport type PasskeysConnectorImpl from \"@naculus/connector-passkeys\";\n\nexport type ClientConfig = {\n projectId: string;\n metadata: {\n name: string;\n description: string;\n url: string;\n icons: string[];\n };\n /** Enable embedded (self-custodial) wallet */\n enableEmbedded?: boolean;\n\n /** Enable passkeys (WebAuthn) connector */\n enablePasskeys?: boolean;\n\n /** Enable Solana injected wallet connector (Phantom, Solflare) */\n enableSolana?: boolean;\n /** Default Solana chain (e.g. \"solana:0\"). Only used when enableSolana is true. */\n solanaDefaultChain?: string;\n};\n\nexport interface Web3Client {\n connector: WalletConnectConnector;\n embeddedConnector: EmbeddedWalletConnector | null;\n /** The Passkeys connector if enabled */\n passkeysConnector: PasskeysConnectorImpl | null;\n /** The Solana injected wallet connector if enabled */\n solanaConnector: UniversalConnector | null;\n connect: () => Promise<UniversalWalletSession>;\n /** Connect via EIP-6963 injected wallet */\n connectInjected: (walletId?: string) => Promise<UniversalWalletSession>;\n connectEmbedded: () => Promise<UniversalWalletSession>;\n /** Connect via passkeys (WebAuthn) */\n connectPasskeys: () => Promise<UniversalWalletSession>;\n reconnect: (session: UniversalWalletSession) => Promise<UniversalWalletSession>;\n disconnect: (session: UniversalWalletSession) => Promise<void>;\n /** Sign a message via the appropriate connector for the session */\n signMessage: (session: UniversalWalletSession, input: { message: string; address?: string; chainId?: string }) => Promise<unknown>;\n /** Send a transaction via the appropriate connector for the session */\n sendTransaction: (session: UniversalWalletSession, input: { transaction: Record<string, unknown>; chainId?: string }) => Promise<unknown>;\n /** Send batched calls (EIP-5792 wallet_sendCalls) via the appropriate connector */\n sendCalls: (session: UniversalWalletSession, calls: BatchCall[], chainId?: string) => Promise<string>;\n getCallsStatus: (session: UniversalWalletSession, bundleHash: string) => Promise<CallsStatus>;\n startPairing: () => Promise<string>;\n completePairing: () => Promise<UniversalWalletSession>;\n getAllConnectors: () => UniversalConnector[];\n /** @internal set embedded connector after lazy init */\n _setEmbeddedConnector: (conn: EmbeddedWalletConnector) => void;\n /** @internal set passkeys connector after lazy init */\n _setPasskeysConnector: (conn: PasskeysConnectorImpl) => void;\n /** @internal set solana connector after lazy init */\n _setSolanaConnector: (conn: UniversalConnector) => void;\n}\n\nlet clientInstance: Web3Client | null = null;\n\nexport function createClient(config: ClientConfig): Web3Client {\n if (clientInstance) return clientInstance;\n\n const connector = createWalletConnectConnector({\n projectId: config.projectId,\n metadata: config.metadata\n });\n\n let _embeddedConnector: EmbeddedWalletConnector | null = null;\n let embeddedInit: Promise<void> | null = null;\n\n if (config.enableEmbedded) {\n embeddedInit = import(\"@naculus/connector-embedded\").then((mod) => {\n const conn = mod.createPocketConnector();\n _embeddedConnector = conn;\n if (clientInstance) clientInstance._setEmbeddedConnector(_embeddedConnector);\n }).catch((err) => {\n logger.warn(\"react/client\", \"Embedded wallet connector not available:\", err);\n _embeddedConnector = null;\n });\n }\n\n let _passkeysConnector: PasskeysConnectorImpl | null = null;\n let passkeysInit: Promise<void> | null = null;\n\n if (config.enablePasskeys) {\n passkeysInit = import(\"@naculus/connector-passkeys\").then((mod) => {\n const conn = mod.createPasskeysConnector();\n _passkeysConnector = conn;\n if (clientInstance) clientInstance._setPasskeysConnector(_passkeysConnector);\n }).catch((err) => {\n logger.warn(\"react/client\", \"Passkeys connector not available:\", err);\n _passkeysConnector = null;\n });\n }\n\n let _solanaConnector: UniversalConnector | null = null;\n let solanaInit: Promise<void> | null = null;\n\n if (config.enableSolana) {\n solanaInit = import(\"@naculus/connector-solana\").then((mod: any) => {\n // Use the singleton instance so hooks (useSolanaAccount, etc.) and\n // the client routing share the same activeSession state.\n const conn = mod.solanaConnector as UniversalConnector;\n if (config.solanaDefaultChain && \"configure\" in conn) {\n (conn as any).configure({ defaultChain: config.solanaDefaultChain });\n }\n _solanaConnector = conn;\n if (typeof window !== \"undefined\" && \"startDiscovery\" in conn) {\n (conn as any).startDiscovery();\n }\n if (clientInstance) clientInstance._setSolanaConnector(_solanaConnector);\n }).catch((err) => {\n logger.warn(\"react/client\", \"Solana connector not available:\", err);\n _solanaConnector = null;\n });\n }\n\n // Start EIP-6963 discovery eagerly so wallets are available when user clicks connect\n if (typeof window !== \"undefined\") {\n eip6963Connector.startDiscovery();\n }\n\n clientInstance = {\n connector,\n get embeddedConnector() { return _embeddedConnector; },\n get passkeysConnector() { return _passkeysConnector; },\n get solanaConnector() { return _solanaConnector; },\n connect: () => connector.connect(),\n connectInjected: async (walletId?: string) => {\n return eip6963Connector.connect(walletId);\n },\n connectEmbedded: async () => {\n if (embeddedInit) await embeddedInit;\n if (!_embeddedConnector) {\n throw new Error(\"Embedded wallet not enabled. Set enableEmbedded: true in config.\");\n }\n return _embeddedConnector.connect();\n },\n connectPasskeys: async () => {\n if (passkeysInit) await passkeysInit;\n if (!_passkeysConnector) {\n throw new Error(\"Passkeys connector not enabled. Set enablePasskeys: true in config.\");\n }\n return _passkeysConnector.connect();\n },\n startPairing: () => connector.startPairing(),\n completePairing: () => connector.completePairing(),\n signMessage: async (session, input) => {\n if (session.id?.startsWith(\"eip6963-\")) {\n return eip6963Connector.signMessage(session as any, input);\n }\n if (session.walletType === \"passkeys\" && _passkeysConnector) {\n return _passkeysConnector.signMessage(session as any, input);\n }\n if (session.walletType === \"solana\") {\n if (solanaInit) await solanaInit;\n if (_solanaConnector) {\n return (_solanaConnector as any).signMessage(session as any, input);\n }\n throw new WalletError(\"wallet_unavailable\", \"Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.\");\n }\n return connector.signMessage(session, input);\n },\n sendTransaction: async (session, input) => {\n if (session.id?.startsWith(\"eip6963-\")) {\n return eip6963Connector.sendTransaction(session as any, input);\n }\n if (session.walletType === \"passkeys\" && _passkeysConnector) {\n return _passkeysConnector.sendTransaction(session as any, input);\n }\n if (session.walletType === \"solana\") {\n if (solanaInit) await solanaInit;\n if (_solanaConnector) {\n return (_solanaConnector as any).sendTransaction(session as any, input);\n }\n throw new WalletError(\"wallet_unavailable\", \"Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.\");\n }\n return connector.sendTransaction(session, input);\n },\n sendCalls: async (session, calls, chainId) => {\n if (session.id?.startsWith(\"eip6963-\")) {\n return eip6963Connector.sendCalls!(session as any, calls, chainId);\n }\n if (session.walletType === \"passkeys\" && _passkeysConnector) {\n return _passkeysConnector.sendCalls(session as any, calls, chainId);\n }\n if (session.walletType === \"solana\") {\n if (solanaInit) await solanaInit;\n if (_solanaConnector) {\n return (_solanaConnector as any).sendCalls(session as any, calls, chainId);\n }\n throw new WalletError(\"wallet_unavailable\", \"Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.\");\n }\n if (session.walletType === \"embedded\" && _embeddedConnector && _embeddedConnector.sendCalls) {\n return _embeddedConnector.sendCalls(session as any, calls, chainId);\n }\n if (!connector.sendCalls) {\n throw new WalletError(\"method_not_allowed\", \"sendCalls not supported by this connector\");\n }\n return connector.sendCalls(session, calls, chainId);\n },\n getCallsStatus: async (session, bundleHash) => {\n if (session.id?.startsWith(\"eip6963-\") && eip6963Connector.getCallsStatus) {\n return eip6963Connector.getCallsStatus(session as any, bundleHash);\n }\n if (session.walletType === \"passkeys\" && _passkeysConnector?.getCallsStatus) {\n return _passkeysConnector.getCallsStatus(session as any, bundleHash);\n }\n if (!connector.getCallsStatus) {\n throw new WalletError(\"method_not_allowed\", \"getCallsStatus not supported by this connector\");\n }\n return connector.getCallsStatus(session, bundleHash);\n },\n reconnect: async (session) => {\n if (session.walletType === \"eip6963\") {\n return eip6963Connector.reconnect(session);\n }\n if (session.walletType === \"embedded\") {\n if (_embeddedConnector) {\n return _embeddedConnector.reconnect(session);\n }\n return session;\n }\n if (session.walletType === \"solana\") {\n // Solana injected wallet doesn't support reconnect (no persisted session).\n // Return the saved session as-is; signing ops require wallet reconnection.\n return session;\n }\n return connector.reconnect(session);\n },\n disconnect: async (session) => {\n if (session.walletType === \"solana\") {\n if (solanaInit) await solanaInit;\n if (_solanaConnector) {\n return _solanaConnector.disconnect(session);\n }\n throw new WalletError(\"wallet_unavailable\", \"Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.\");\n }\n return connector.disconnect(session);\n },\n getAllConnectors: () => {\n const connectors: UniversalConnector[] = [connector];\n if (_embeddedConnector) connectors.push(_embeddedConnector);\n if (_passkeysConnector) connectors.push(_passkeysConnector);\n if (_solanaConnector) connectors.push(_solanaConnector);\n return connectors;\n },\n _setEmbeddedConnector: (conn: EmbeddedWalletConnector) => { _embeddedConnector = conn; },\n _setPasskeysConnector: (conn: PasskeysConnectorImpl) => { _passkeysConnector = conn; },\n _setSolanaConnector: (conn: UniversalConnector) => { _solanaConnector = conn; },\n };\n\n return clientInstance;\n}\n\nexport function getClient(): Web3Client | null {\n return clientInstance;\n}\n\nexport function clearClient(): void {\n clientInstance = null;\n}\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iBAAAE,EAAA,iBAAAC,EAAA,cAAAC,IAAA,eAAAC,EAAAL,GAAA,IAAAM,EAAqE,4CACrEC,EAAiC,2CACjCC,EAAoC,iCA0DhCC,EAAoC,KAEjC,SAASN,EAAaO,EAAkC,CAC7D,GAAID,EAAgB,OAAOA,EAE3B,IAAME,KAAY,gCAA6B,CAC7C,UAAWD,EAAO,UAClB,SAAUA,EAAO,QACnB,CAAC,EAEGE,EAAqD,KACrDC,EAAqC,KAErCH,EAAO,iBACPG,EAAe,OAAO,6BAA6B,EAAE,KAAMC,GAAQ,CAEjEF,EADaE,EAAI,sBAAsB,EAEnCL,GAAgBA,EAAe,sBAAsBG,CAAkB,CAC/E,CAAC,EAAE,MAAOG,GAAQ,CAChB,SAAO,KAAK,eAAgB,2CAA4CA,CAAG,EAC3EH,EAAqB,IACvB,CAAC,GAGH,IAAII,EAAmD,KACnDC,EAAqC,KAErCP,EAAO,iBACPO,EAAe,OAAO,6BAA6B,EAAE,KAAMH,GAAQ,CAEjEE,EADaF,EAAI,wBAAwB,EAErCL,GAAgBA,EAAe,sBAAsBO,CAAkB,CAC/E,CAAC,EAAE,MAAOD,GAAQ,CAChB,SAAO,KAAK,eAAgB,oCAAqCA,CAAG,EACpEC,EAAqB,IACvB,CAAC,GAGH,IAAIE,EAA8C,KAC9CC,EAAmC,KAEvC,OAAIT,EAAO,eACPS,EAAa,OAAO,2BAA2B,EAAE,KAAML,GAAa,CAGlE,IAAMM,EAAON,EAAI,gBACbJ,EAAO,oBAAsB,cAAeU,GAC7CA,EAAa,UAAU,CAAE,aAAcV,EAAO,kBAAmB,CAAC,EAErEQ,EAAmBE,EACf,OAAO,OAAW,KAAe,mBAAoBA,GACtDA,EAAa,eAAe,EAE3BX,GAAgBA,EAAe,oBAAoBS,CAAgB,CAC3E,CAAC,EAAE,MAAOH,GAAQ,CAChB,SAAO,KAAK,eAAgB,kCAAmCA,CAAG,EAClEG,EAAmB,IACrB,CAAC,GAIC,OAAO,OAAW,KACpB,mBAAiB,eAAe,EAGlCT,EAAiB,CACf,UAAAE,EACA,IAAI,mBAAoB,CAAE,OAAOC,CAAoB,EACrD,IAAI,mBAAoB,CAAE,OAAOI,CAAoB,EACrD,IAAI,iBAAkB,CAAE,OAAOE,CAAkB,EACjD,QAAS,IAAMP,EAAU,QAAQ,EACjC,gBAAiB,MAAOU,GACf,mBAAiB,QAAQA,CAAQ,EAE1C,gBAAiB,SAAY,CAE3B,GADIR,GAAc,MAAMA,EACpB,CAACD,EACH,MAAM,IAAI,MAAM,kEAAkE,EAEpF,OAAOA,EAAmB,QAAQ,CACpC,EACA,gBAAiB,SAAY,CAE3B,GADIK,GAAc,MAAMA,EACpB,CAACD,EACH,MAAM,IAAI,MAAM,qEAAqE,EAEvF,OAAOA,EAAmB,QAAQ,CACpC,EACA,aAAc,IAAML,EAAU,aAAa,EAC3C,gBAAiB,IAAMA,EAAU,gBAAgB,EACjD,YAAa,MAAOW,EAASC,IAAU,CACrC,GAAID,EAAQ,IAAI,WAAW,UAAU,EACnC,OAAO,mBAAiB,YAAYA,EAAgBC,CAAK,EAE3D,GAAID,EAAQ,aAAe,YAAcN,EACvC,OAAOA,EAAmB,YAAYM,EAAgBC,CAAK,EAE7D,GAAID,EAAQ,aAAe,SAAU,CAEnC,GADIH,GAAY,MAAMA,EAClBD,EACF,OAAQA,EAAyB,YAAYI,EAAgBC,CAAK,EAEpE,MAAM,IAAI,cAAY,qBAAsB,yGAAyG,CACvJ,CACA,OAAOZ,EAAU,YAAYW,EAASC,CAAK,CAC7C,EACA,gBAAiB,MAAOD,EAASC,IAAU,CACzC,GAAID,EAAQ,IAAI,WAAW,UAAU,EACnC,OAAO,mBAAiB,gBAAgBA,EAAgBC,CAAK,EAE/D,GAAID,EAAQ,aAAe,YAAcN,EACvC,OAAOA,EAAmB,gBAAgBM,EAAgBC,CAAK,EAEjE,GAAID,EAAQ,aAAe,SAAU,CAEnC,GADIH,GAAY,MAAMA,EAClBD,EACF,OAAQA,EAAyB,gBAAgBI,EAAgBC,CAAK,EAExE,MAAM,IAAI,cAAY,qBAAsB,yGAAyG,CACvJ,CACA,OAAOZ,EAAU,gBAAgBW,EAASC,CAAK,CACjD,EACA,UAAW,MAAOD,EAASE,EAAOC,IAAY,CAC5C,GAAIH,EAAQ,IAAI,WAAW,UAAU,EACnC,OAAO,mBAAiB,UAAWA,EAAgBE,EAAOC,CAAO,EAEnE,GAAIH,EAAQ,aAAe,YAAcN,EACvC,OAAOA,EAAmB,UAAUM,EAAgBE,EAAOC,CAAO,EAEpE,GAAIH,EAAQ,aAAe,SAAU,CAEnC,GADIH,GAAY,MAAMA,EAClBD,EACF,OAAQA,EAAyB,UAAUI,EAAgBE,EAAOC,CAAO,EAE3E,MAAM,IAAI,cAAY,qBAAsB,yGAAyG,CACvJ,CACA,GAAIH,EAAQ,aAAe,YAAcV,GAAsBA,EAAmB,UAChF,OAAOA,EAAmB,UAAUU,EAAgBE,EAAOC,CAAO,EAEpE,GAAI,CAACd,EAAU,UACb,MAAM,IAAI,cAAY,qBAAsB,2CAA2C,EAEzF,OAAOA,EAAU,UAAUW,EAASE,EAAOC,CAAO,CACpD,EACA,eAAgB,MAAOH,EAASI,IAAe,CAC7C,GAAIJ,EAAQ,IAAI,WAAW,UAAU,GAAK,mBAAiB,eACzD,OAAO,mBAAiB,eAAeA,EAAgBI,CAAU,EAEnE,GAAIJ,EAAQ,aAAe,YAAcN,GAAoB,eAC3D,OAAOA,EAAmB,eAAeM,EAAgBI,CAAU,EAErE,GAAI,CAACf,EAAU,eACb,MAAM,IAAI,cAAY,qBAAsB,gDAAgD,EAE9F,OAAOA,EAAU,eAAeW,EAASI,CAAU,CACrD,EACA,UAAW,MAAOJ,GACZA,EAAQ,aAAe,UAClB,mBAAiB,UAAUA,CAAO,EAEvCA,EAAQ,aAAe,WACrBV,EACKA,EAAmB,UAAUU,CAAO,EAEtCA,EAELA,EAAQ,aAAe,SAGlBA,EAEFX,EAAU,UAAUW,CAAO,EAEpC,WAAY,MAAOA,GAAY,CAC7B,GAAIA,EAAQ,aAAe,SAAU,CAEnC,GADIH,GAAY,MAAMA,EAClBD,EACF,OAAOA,EAAiB,WAAWI,CAAO,EAE5C,MAAM,IAAI,cAAY,qBAAsB,yGAAyG,CACvJ,CACA,OAAOX,EAAU,WAAWW,CAAO,CACrC,EACA,iBAAkB,IAAM,CACtB,IAAMK,EAAmC,CAAChB,CAAS,EACnD,OAAIC,GAAoBe,EAAW,KAAKf,CAAkB,EACtDI,GAAoBW,EAAW,KAAKX,CAAkB,EACtDE,GAAkBS,EAAW,KAAKT,CAAgB,EAC/CS,CACT,EACA,sBAAwBP,GAAkC,CAAER,EAAqBQ,CAAM,EACvF,sBAAwBA,GAAgC,CAAEJ,EAAqBI,CAAM,EACrF,oBAAsBA,GAA6B,CAAEF,EAAmBE,CAAM,CAChF,EAEOX,CACT,CAEO,SAASL,GAA+B,CAC7C,OAAOK,CACT,CAEO,SAASP,GAAoB,CAClCO,EAAiB,IACnB","names":["client_exports","__export","clearClient","createClient","getClient","__toCommonJS","import_connector_walletconnect","import_connector_evm_injected","import_connect_core","clientInstance","config","connector","_embeddedConnector","embeddedInit","mod","err","_passkeysConnector","passkeysInit","_solanaConnector","solanaInit","conn","walletId","session","input","calls","chainId","bundleHash","connectors"]}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createWalletConnectConnector as f}from"@naculus/connector-walletconnect";import{eip6963Connector as i}from"@naculus/connector-evm-injected";import{logger as m,WalletError as d}from"@naculus/connect-core";var r=null;function v(c){if(r)return r;let o=f({projectId:c.projectId,metadata:c.metadata}),l=null,C=null;c.enableEmbedded&&(C=import("@naculus/connector-embedded").then(e=>{l=e.createPocketConnector(),r&&r._setEmbeddedConnector(l)}).catch(e=>{m.warn("react/client","Embedded wallet connector not available:",e),l=null}));let t=null,y=null;c.enablePasskeys&&(y=import("@naculus/connector-passkeys").then(e=>{t=e.createPasskeysConnector(),r&&r._setPasskeysConnector(t)}).catch(e=>{m.warn("react/client","Passkeys connector not available:",e),t=null}));let a=null,s=null;return c.enableSolana&&(s=import("@naculus/connector-solana").then(e=>{let n=e.solanaConnector;c.solanaDefaultChain&&"configure"in n&&n.configure({defaultChain:c.solanaDefaultChain}),a=n,typeof window<"u"&&"startDiscovery"in n&&n.startDiscovery(),r&&r._setSolanaConnector(a)}).catch(e=>{m.warn("react/client","Solana connector not available:",e),a=null})),typeof window<"u"&&i.startDiscovery(),r={connector:o,get embeddedConnector(){return l},get passkeysConnector(){return t},get solanaConnector(){return a},connect:()=>o.connect(),connectInjected:async e=>i.connect(e),connectEmbedded:async()=>{if(C&&await C,!l)throw new Error("Embedded wallet not enabled. Set enableEmbedded: true in config.");return l.connect()},connectPasskeys:async()=>{if(y&&await y,!t)throw new Error("Passkeys connector not enabled. Set enablePasskeys: true in config.");return t.connect()},startPairing:()=>o.startPairing(),completePairing:()=>o.completePairing(),signMessage:async(e,n)=>{if(e.id?.startsWith("eip6963-"))return i.signMessage(e,n);if(e.walletType==="passkeys"&&t)return t.signMessage(e,n);if(e.walletType==="solana"){if(s&&await s,a)return a.signMessage(e,n);throw new d("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}return o.signMessage(e,n)},sendTransaction:async(e,n)=>{if(e.id?.startsWith("eip6963-"))return i.sendTransaction(e,n);if(e.walletType==="passkeys"&&t)return t.sendTransaction(e,n);if(e.walletType==="solana"){if(s&&await s,a)return a.sendTransaction(e,n);throw new d("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}return o.sendTransaction(e,n)},sendCalls:async(e,n,u)=>{if(e.id?.startsWith("eip6963-"))return i.sendCalls(e,n,u);if(e.walletType==="passkeys"&&t)return t.sendCalls(e,n,u);if(e.walletType==="solana"){if(s&&await s,a)return a.sendCalls(e,n,u);throw new d("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}if(e.walletType==="embedded"&&l&&l.sendCalls)return l.sendCalls(e,n,u);if(!o.sendCalls)throw new d("method_not_allowed","sendCalls not supported by this connector");return o.sendCalls(e,n,u)},getCallsStatus:async(e,n)=>{if(e.id?.startsWith("eip6963-")&&i.getCallsStatus)return i.getCallsStatus(e,n);if(e.walletType==="passkeys"&&t?.getCallsStatus)return t.getCallsStatus(e,n);if(!o.getCallsStatus)throw new d("method_not_allowed","getCallsStatus not supported by this connector");return o.getCallsStatus(e,n)},reconnect:async e=>e.walletType==="eip6963"?i.reconnect(e):e.walletType==="embedded"?l?l.reconnect(e):e:e.walletType==="solana"?e:o.reconnect(e),disconnect:async e=>{if(e.walletType==="solana"){if(s&&await s,a)return a.disconnect(e);throw new d("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}return o.disconnect(e)},getAllConnectors:()=>{let e=[o];return l&&e.push(l),t&&e.push(t),a&&e.push(a),e},_setEmbeddedConnector:e=>{l=e},_setPasskeysConnector:e=>{t=e},_setSolanaConnector:e=>{a=e}},r}function S(){return r}function P(){r=null}export{P as clearClient,v as createClient,S as getClient};
|
|
2
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client.ts"],"sourcesContent":["import { WalletConnectConnector, createWalletConnectConnector } from \"@naculus/connector-walletconnect\";\nimport { eip6963Connector } from \"@naculus/connector-evm-injected\";\nimport { logger, WalletError } from \"@naculus/connect-core\";\nimport type { UniversalConnector, UniversalWalletSession, BatchCall, CallsStatus } from \"@naculus/connect-core\";\nimport type { PocketConnectorClass as EmbeddedWalletConnector } from \"@naculus/connector-embedded\";\nimport type PasskeysConnectorImpl from \"@naculus/connector-passkeys\";\n\nexport type ClientConfig = {\n projectId: string;\n metadata: {\n name: string;\n description: string;\n url: string;\n icons: string[];\n };\n /** Enable embedded (self-custodial) wallet */\n enableEmbedded?: boolean;\n\n /** Enable passkeys (WebAuthn) connector */\n enablePasskeys?: boolean;\n\n /** Enable Solana injected wallet connector (Phantom, Solflare) */\n enableSolana?: boolean;\n /** Default Solana chain (e.g. \"solana:0\"). Only used when enableSolana is true. */\n solanaDefaultChain?: string;\n};\n\nexport interface Web3Client {\n connector: WalletConnectConnector;\n embeddedConnector: EmbeddedWalletConnector | null;\n /** The Passkeys connector if enabled */\n passkeysConnector: PasskeysConnectorImpl | null;\n /** The Solana injected wallet connector if enabled */\n solanaConnector: UniversalConnector | null;\n connect: () => Promise<UniversalWalletSession>;\n /** Connect via EIP-6963 injected wallet */\n connectInjected: (walletId?: string) => Promise<UniversalWalletSession>;\n connectEmbedded: () => Promise<UniversalWalletSession>;\n /** Connect via passkeys (WebAuthn) */\n connectPasskeys: () => Promise<UniversalWalletSession>;\n reconnect: (session: UniversalWalletSession) => Promise<UniversalWalletSession>;\n disconnect: (session: UniversalWalletSession) => Promise<void>;\n /** Sign a message via the appropriate connector for the session */\n signMessage: (session: UniversalWalletSession, input: { message: string; address?: string; chainId?: string }) => Promise<unknown>;\n /** Send a transaction via the appropriate connector for the session */\n sendTransaction: (session: UniversalWalletSession, input: { transaction: Record<string, unknown>; chainId?: string }) => Promise<unknown>;\n /** Send batched calls (EIP-5792 wallet_sendCalls) via the appropriate connector */\n sendCalls: (session: UniversalWalletSession, calls: BatchCall[], chainId?: string) => Promise<string>;\n getCallsStatus: (session: UniversalWalletSession, bundleHash: string) => Promise<CallsStatus>;\n startPairing: () => Promise<string>;\n completePairing: () => Promise<UniversalWalletSession>;\n getAllConnectors: () => UniversalConnector[];\n /** @internal set embedded connector after lazy init */\n _setEmbeddedConnector: (conn: EmbeddedWalletConnector) => void;\n /** @internal set passkeys connector after lazy init */\n _setPasskeysConnector: (conn: PasskeysConnectorImpl) => void;\n /** @internal set solana connector after lazy init */\n _setSolanaConnector: (conn: UniversalConnector) => void;\n}\n\nlet clientInstance: Web3Client | null = null;\n\nexport function createClient(config: ClientConfig): Web3Client {\n if (clientInstance) return clientInstance;\n\n const connector = createWalletConnectConnector({\n projectId: config.projectId,\n metadata: config.metadata\n });\n\n let _embeddedConnector: EmbeddedWalletConnector | null = null;\n let embeddedInit: Promise<void> | null = null;\n\n if (config.enableEmbedded) {\n embeddedInit = import(\"@naculus/connector-embedded\").then((mod) => {\n const conn = mod.createPocketConnector();\n _embeddedConnector = conn;\n if (clientInstance) clientInstance._setEmbeddedConnector(_embeddedConnector);\n }).catch((err) => {\n logger.warn(\"react/client\", \"Embedded wallet connector not available:\", err);\n _embeddedConnector = null;\n });\n }\n\n let _passkeysConnector: PasskeysConnectorImpl | null = null;\n let passkeysInit: Promise<void> | null = null;\n\n if (config.enablePasskeys) {\n passkeysInit = import(\"@naculus/connector-passkeys\").then((mod) => {\n const conn = mod.createPasskeysConnector();\n _passkeysConnector = conn;\n if (clientInstance) clientInstance._setPasskeysConnector(_passkeysConnector);\n }).catch((err) => {\n logger.warn(\"react/client\", \"Passkeys connector not available:\", err);\n _passkeysConnector = null;\n });\n }\n\n let _solanaConnector: UniversalConnector | null = null;\n let solanaInit: Promise<void> | null = null;\n\n if (config.enableSolana) {\n solanaInit = import(\"@naculus/connector-solana\").then((mod: any) => {\n // Use the singleton instance so hooks (useSolanaAccount, etc.) and\n // the client routing share the same activeSession state.\n const conn = mod.solanaConnector as UniversalConnector;\n if (config.solanaDefaultChain && \"configure\" in conn) {\n (conn as any).configure({ defaultChain: config.solanaDefaultChain });\n }\n _solanaConnector = conn;\n if (typeof window !== \"undefined\" && \"startDiscovery\" in conn) {\n (conn as any).startDiscovery();\n }\n if (clientInstance) clientInstance._setSolanaConnector(_solanaConnector);\n }).catch((err) => {\n logger.warn(\"react/client\", \"Solana connector not available:\", err);\n _solanaConnector = null;\n });\n }\n\n // Start EIP-6963 discovery eagerly so wallets are available when user clicks connect\n if (typeof window !== \"undefined\") {\n eip6963Connector.startDiscovery();\n }\n\n clientInstance = {\n connector,\n get embeddedConnector() { return _embeddedConnector; },\n get passkeysConnector() { return _passkeysConnector; },\n get solanaConnector() { return _solanaConnector; },\n connect: () => connector.connect(),\n connectInjected: async (walletId?: string) => {\n return eip6963Connector.connect(walletId);\n },\n connectEmbedded: async () => {\n if (embeddedInit) await embeddedInit;\n if (!_embeddedConnector) {\n throw new Error(\"Embedded wallet not enabled. Set enableEmbedded: true in config.\");\n }\n return _embeddedConnector.connect();\n },\n connectPasskeys: async () => {\n if (passkeysInit) await passkeysInit;\n if (!_passkeysConnector) {\n throw new Error(\"Passkeys connector not enabled. Set enablePasskeys: true in config.\");\n }\n return _passkeysConnector.connect();\n },\n startPairing: () => connector.startPairing(),\n completePairing: () => connector.completePairing(),\n signMessage: async (session, input) => {\n if (session.id?.startsWith(\"eip6963-\")) {\n return eip6963Connector.signMessage(session as any, input);\n }\n if (session.walletType === \"passkeys\" && _passkeysConnector) {\n return _passkeysConnector.signMessage(session as any, input);\n }\n if (session.walletType === \"solana\") {\n if (solanaInit) await solanaInit;\n if (_solanaConnector) {\n return (_solanaConnector as any).signMessage(session as any, input);\n }\n throw new WalletError(\"wallet_unavailable\", \"Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.\");\n }\n return connector.signMessage(session, input);\n },\n sendTransaction: async (session, input) => {\n if (session.id?.startsWith(\"eip6963-\")) {\n return eip6963Connector.sendTransaction(session as any, input);\n }\n if (session.walletType === \"passkeys\" && _passkeysConnector) {\n return _passkeysConnector.sendTransaction(session as any, input);\n }\n if (session.walletType === \"solana\") {\n if (solanaInit) await solanaInit;\n if (_solanaConnector) {\n return (_solanaConnector as any).sendTransaction(session as any, input);\n }\n throw new WalletError(\"wallet_unavailable\", \"Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.\");\n }\n return connector.sendTransaction(session, input);\n },\n sendCalls: async (session, calls, chainId) => {\n if (session.id?.startsWith(\"eip6963-\")) {\n return eip6963Connector.sendCalls!(session as any, calls, chainId);\n }\n if (session.walletType === \"passkeys\" && _passkeysConnector) {\n return _passkeysConnector.sendCalls(session as any, calls, chainId);\n }\n if (session.walletType === \"solana\") {\n if (solanaInit) await solanaInit;\n if (_solanaConnector) {\n return (_solanaConnector as any).sendCalls(session as any, calls, chainId);\n }\n throw new WalletError(\"wallet_unavailable\", \"Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.\");\n }\n if (session.walletType === \"embedded\" && _embeddedConnector && _embeddedConnector.sendCalls) {\n return _embeddedConnector.sendCalls(session as any, calls, chainId);\n }\n if (!connector.sendCalls) {\n throw new WalletError(\"method_not_allowed\", \"sendCalls not supported by this connector\");\n }\n return connector.sendCalls(session, calls, chainId);\n },\n getCallsStatus: async (session, bundleHash) => {\n if (session.id?.startsWith(\"eip6963-\") && eip6963Connector.getCallsStatus) {\n return eip6963Connector.getCallsStatus(session as any, bundleHash);\n }\n if (session.walletType === \"passkeys\" && _passkeysConnector?.getCallsStatus) {\n return _passkeysConnector.getCallsStatus(session as any, bundleHash);\n }\n if (!connector.getCallsStatus) {\n throw new WalletError(\"method_not_allowed\", \"getCallsStatus not supported by this connector\");\n }\n return connector.getCallsStatus(session, bundleHash);\n },\n reconnect: async (session) => {\n if (session.walletType === \"eip6963\") {\n return eip6963Connector.reconnect(session);\n }\n if (session.walletType === \"embedded\") {\n if (_embeddedConnector) {\n return _embeddedConnector.reconnect(session);\n }\n return session;\n }\n if (session.walletType === \"solana\") {\n // Solana injected wallet doesn't support reconnect (no persisted session).\n // Return the saved session as-is; signing ops require wallet reconnection.\n return session;\n }\n return connector.reconnect(session);\n },\n disconnect: async (session) => {\n if (session.walletType === \"solana\") {\n if (solanaInit) await solanaInit;\n if (_solanaConnector) {\n return _solanaConnector.disconnect(session);\n }\n throw new WalletError(\"wallet_unavailable\", \"Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.\");\n }\n return connector.disconnect(session);\n },\n getAllConnectors: () => {\n const connectors: UniversalConnector[] = [connector];\n if (_embeddedConnector) connectors.push(_embeddedConnector);\n if (_passkeysConnector) connectors.push(_passkeysConnector);\n if (_solanaConnector) connectors.push(_solanaConnector);\n return connectors;\n },\n _setEmbeddedConnector: (conn: EmbeddedWalletConnector) => { _embeddedConnector = conn; },\n _setPasskeysConnector: (conn: PasskeysConnectorImpl) => { _passkeysConnector = conn; },\n _setSolanaConnector: (conn: UniversalConnector) => { _solanaConnector = conn; },\n };\n\n return clientInstance;\n}\n\nexport function getClient(): Web3Client | null {\n return clientInstance;\n}\n\nexport function clearClient(): void {\n clientInstance = null;\n}\n"],"mappings":"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","names":["createWalletConnectConnector","eip6963Connector","logger","WalletError","clientInstance","createClient","config","connector","_embeddedConnector","embeddedInit","mod","err","_passkeysConnector","passkeysInit","_solanaConnector","solanaInit","conn","walletId","session","input","calls","chainId","bundleHash","connectors","getClient","clearClient"]}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var zr=Object.create;var Xe=Object.defineProperty;var Qr=Object.getOwnPropertyDescriptor;var Xr=Object.getOwnPropertyNames;var Yr=Object.getPrototypeOf,Jr=Object.prototype.hasOwnProperty;var Zr=(e,t)=>{for(var n in t)Xe(e,n,{get:t[n],enumerable:!0})},ln=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Xr(t))!Jr.call(e,r)&&r!==n&&Xe(e,r,{get:()=>t[r],enumerable:!(s=Qr(t,r))||s.enumerable});return e};var Se=(e,t,n)=>(n=e!=null?zr(Yr(e)):{},ln(t||!e||!e.__esModule?Xe(n,"default",{value:e,enumerable:!0}):n,e)),es=e=>ln(Xe({},"__esModule",{value:!0}),e);var Hs={};Zr(Hs,{AppkitAccordion:()=>Er,AppkitAccountButton:()=>kr,AppkitAlertDialog:()=>yr,AppkitAvatar:()=>Ar,AppkitBadge:()=>xr,AppkitButton:()=>vr,AppkitCard:()=>wr,AppkitCardContent:()=>br,AppkitCardDescription:()=>Tr,AppkitCardFooter:()=>Rr,AppkitCardHeader:()=>Ir,AppkitCardTitle:()=>Ur,AppkitCheckbox:()=>Pr,AppkitCollapsible:()=>Wr,AppkitConnectButton:()=>Or,AppkitDialog:()=>_r,AppkitDropdownMenu:()=>Nr,AppkitInput:()=>Dr,AppkitPopover:()=>Lr,AppkitProgress:()=>Mr,AppkitScrollArea:()=>Br,AppkitSelect:()=>Hr,AppkitSeparator:()=>Fr,AppkitSkeleton:()=>Gr,AppkitSwitch:()=>$r,AppkitTabs:()=>Kr,AppkitToggleGroup:()=>jr,AppkitTooltip:()=>Vr,DEFAULT_EVM_CHAINS:()=>$t,TokenSelector:()=>rn,TxMonitorContext:()=>nn,WALLET_ERROR_DESCRIPTIONS:()=>tn,WALLET_ERROR_TITLES:()=>en,Web3ConnectProvider:()=>fn,Web3Context:()=>et,clearClient:()=>un,createClient:()=>Ye,getChainById:()=>Je,getClient:()=>B,getDefaultChains:()=>Ze,getLocale:()=>Dn,getUserFriendlyError:()=>Me,isRetryableError:()=>pt,resetSessionKeyManager:()=>zn,setLocale:()=>Nn,t:()=>ve,useAccount:()=>G,useBalance:()=>vn,useChain:()=>he,useCompareCosts:()=>an,useConnect:()=>hn,useCreateSessionKey:()=>jn,useDisconnect:()=>En,useERC20Allowance:()=>Pn,useERC20Approve:()=>In,useERC20Transfer:()=>Tn,useERC20TransferSimulation:()=>rr,useEmbeddedWallet:()=>On,useExecuteRoute:()=>on,useLastTx:()=>sr,useLookupAddress:()=>Xn,useNotification:()=>Cr,useResolveName:()=>Qn,useRevokeSession:()=>Vn,useRouteQuote:()=>sn,useSIWxLogin:()=>it,useSIWxSession:()=>$n,useSendCalls:()=>An,useSendTransaction:()=>Ue,useSendUserOperation:()=>ar,useSendWithSession:()=>qn,useSession:()=>Yn,useSessionKeys:()=>Kn,useSignInWithEthereum:()=>Hn,useSignInWithX:()=>_e,useSignMessage:()=>yn,useSimulateTransfer:()=>hr,useSiwxAuthSession:()=>Fn,useSmartAccount:()=>or,useSwitchChain:()=>Jn,useTokenBalance:()=>wn,useTokenList:()=>qe,useTokenSearch:()=>ze,useTransactionSimulation:()=>mt,useTxHistory:()=>tr,useTxMonitor:()=>er,useUserOpStatus:()=>ir,useValidateDestination:()=>Bn,useViemClient:()=>ie,useWallet:()=>Cn,useWeb3:()=>I,useWeb3ErrorHandler:()=>Zn,validateDestination:()=>Vt});module.exports=es(Hs);var P=require("react");var cn=require("@naculus/connector-walletconnect"),ue=require("@naculus/connector-evm-injected"),re=require("@naculus/connect-core"),Y=null;function Ye(e){if(Y)return Y;let t=(0,cn.createWalletConnectConnector)({projectId:e.projectId,metadata:e.metadata}),n=null,s=null;e.enableEmbedded&&(s=import("@naculus/connector-embedded").then(o=>{n=o.createPocketConnector(),Y&&Y._setEmbeddedConnector(n)}).catch(o=>{re.logger.warn("react/client","Embedded wallet connector not available:",o),n=null}));let r=null,i=null;e.enablePasskeys&&(i=import("@naculus/connector-passkeys").then(o=>{r=o.createPasskeysConnector(),Y&&Y._setPasskeysConnector(r)}).catch(o=>{re.logger.warn("react/client","Passkeys connector not available:",o),r=null}));let l=null,p=null;return e.enableSolana&&(p=import("@naculus/connector-solana").then(o=>{let a=o.solanaConnector;e.solanaDefaultChain&&"configure"in a&&a.configure({defaultChain:e.solanaDefaultChain}),l=a,typeof window<"u"&&"startDiscovery"in a&&a.startDiscovery(),Y&&Y._setSolanaConnector(l)}).catch(o=>{re.logger.warn("react/client","Solana connector not available:",o),l=null})),typeof window<"u"&&ue.eip6963Connector.startDiscovery(),Y={connector:t,get embeddedConnector(){return n},get passkeysConnector(){return r},get solanaConnector(){return l},connect:()=>t.connect(),connectInjected:async o=>ue.eip6963Connector.connect(o),connectEmbedded:async()=>{if(s&&await s,!n)throw new Error("Embedded wallet not enabled. Set enableEmbedded: true in config.");return n.connect()},connectPasskeys:async()=>{if(i&&await i,!r)throw new Error("Passkeys connector not enabled. Set enablePasskeys: true in config.");return r.connect()},startPairing:()=>t.startPairing(),completePairing:()=>t.completePairing(),signMessage:async(o,a)=>{if(o.id?.startsWith("eip6963-"))return ue.eip6963Connector.signMessage(o,a);if(o.walletType==="passkeys"&&r)return r.signMessage(o,a);if(o.walletType==="solana"){if(p&&await p,l)return l.signMessage(o,a);throw new re.WalletError("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}return t.signMessage(o,a)},sendTransaction:async(o,a)=>{if(o.id?.startsWith("eip6963-"))return ue.eip6963Connector.sendTransaction(o,a);if(o.walletType==="passkeys"&&r)return r.sendTransaction(o,a);if(o.walletType==="solana"){if(p&&await p,l)return l.sendTransaction(o,a);throw new re.WalletError("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}return t.sendTransaction(o,a)},sendCalls:async(o,a,u)=>{if(o.id?.startsWith("eip6963-"))return ue.eip6963Connector.sendCalls(o,a,u);if(o.walletType==="passkeys"&&r)return r.sendCalls(o,a,u);if(o.walletType==="solana"){if(p&&await p,l)return l.sendCalls(o,a,u);throw new re.WalletError("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}if(o.walletType==="embedded"&&n&&n.sendCalls)return n.sendCalls(o,a,u);if(!t.sendCalls)throw new re.WalletError("method_not_allowed","sendCalls not supported by this connector");return t.sendCalls(o,a,u)},getCallsStatus:async(o,a)=>{if(o.id?.startsWith("eip6963-")&&ue.eip6963Connector.getCallsStatus)return ue.eip6963Connector.getCallsStatus(o,a);if(o.walletType==="passkeys"&&r?.getCallsStatus)return r.getCallsStatus(o,a);if(!t.getCallsStatus)throw new re.WalletError("method_not_allowed","getCallsStatus not supported by this connector");return t.getCallsStatus(o,a)},reconnect:async o=>o.walletType==="eip6963"?ue.eip6963Connector.reconnect(o):o.walletType==="embedded"?n?n.reconnect(o):o:o.walletType==="solana"?o:t.reconnect(o),disconnect:async o=>{if(o.walletType==="solana"){if(p&&await p,l)return l.disconnect(o);throw new re.WalletError("wallet_unavailable","Solana connector not available. Ensure enableSolana is true and @naculus/connector-solana is installed.")}return t.disconnect(o)},getAllConnectors:()=>{let o=[t];return n&&o.push(n),r&&o.push(r),l&&o.push(l),o},_setEmbeddedConnector:o=>{n=o},_setPasskeysConnector:o=>{r=o},_setSolanaConnector:o=>{l=o}},Y}function B(){return Y}function un(){Y=null}var dn=require("@naculus/connector-evm-injected"),F=require("@naculus/connect-core");var pe=require("@naculus/connect-core"),ts=[{id:5,namespace:"eip155",name:"Goerli",rpcUrl:"https://goerli.blockpi.network/v1/rpc/public",explorerUrl:"https://goerli.etherscan.io",token:"ETH"},{id:80001,namespace:"eip155",name:"Mumbai",rpcUrl:"https://rpc-mumbai.maticvigil.com",explorerUrl:"https://mumbai.polygonscan.com",token:"MATIC"},{id:421613,namespace:"eip155",name:"Arbitrum Goerli",rpcUrl:"https://goerli-rollup.arbitrum.io/rpc",explorerUrl:"https://goerli.arbiscan.io",token:"ETH"},{id:420,namespace:"eip155",name:"Optimism Goerli",rpcUrl:"https://goerli.optimism.io",explorerUrl:"https://goerli-optimism.etherscan.io",token:"ETH"}];function ns(e){let t=pe.CHAINS[e];if(!t||!t.explorerUrl)return null;let n=t.caip2Id;return{id:e,namespace:"eip155",name:t.name,rpcUrl:(0,pe.getRpcUrl)(n,pe.DEFAULT_RPC_URLS[n]??""),explorerUrl:t.explorerUrl,token:t.nativeCurrency.symbol}}function rs(){if(!pe.CHAINS)return[];let e=[],t=Object.keys(pe.CHAINS).map(Number).sort((n,s)=>n-s);for(let n of t){let s=ns(n);s&&e.push(s)}for(let n of ts)pe.CHAINS[n.id]||e.push(n);return e}var $t=rs();function Je(e,t){return e.find(n=>{let s=t.startsWith("eip155:")?"eip155":null;if(!s)return!1;let r=t.includes(":")?parseInt(t.split(":")[1],10):parseInt(t,10);return n.namespace===s&&n.id===r})}function Ze(){return[...$t]}var gn=require("react/jsx-runtime");function pn(e,t,n="Operation"){return Promise.race([e,new Promise((s,r)=>setTimeout(()=>r(new Error(`${n} timed out after ${t}ms`)),t))])}async function ss(e,t){let n;for(let s=0;s<=t.maxRetries;s++)try{return await e()}catch(r){if(n=r,s<t.maxRetries){let i=t.baseDelay*2**s;F.logger.warn("react/provider",`Retry attempt ${s+1}/${t.maxRetries} after ${i}ms`),await new Promise(l=>setTimeout(l,i))}}throw n}var mn={status:"disconnected",session:null,accounts:[],chainId:null,error:null};function os(e,t){switch(t.type){case"SET_STATUS":return{...e,status:t.payload};case"SET_SESSION":return{...e,session:t.payload};case"SET_ACCOUNTS":return{...e,accounts:t.payload};case"SET_CHAIN":return{...e,chainId:t.payload};case"SET_ERROR":return{...e,error:t.payload};case"RESET":return mn;default:return e}}var et=(0,P.createContext)(null);function fn({children:e,config:t,autoConnect:n=!0}){let[s,r]=(0,P.useReducer)(os,mn),i=(0,P.useMemo)(()=>t.chains??Ze(),[t.chains]),l=t.connectionTimeout??3e4,p=t.maxRetries??2,o=(0,P.useMemo)(()=>new F.LocalStorageSessionStorage(t.storageKey??"naculus_web3_session"),[t.storageKey]),a=(0,P.useMemo)(()=>Ye({projectId:t.projectId,metadata:t.metadata,enableEmbedded:t.enableEmbedded,enablePasskeys:t.enablePasskeys,enableSolana:t.enableSolana,solanaDefaultChain:t.solanaDefaultChain}),[t.projectId,t.metadata,t.enableEmbedded,t.enablePasskeys,t.enableSolana,t.solanaDefaultChain]),u=(0,P.useRef)(null),c=(0,P.useMemo)(()=>{let C=(0,F.createConnectorManager)();C.register(a.connector.id,a.connector);let x={},w={};for(let U of i){let D=`${U.namespace}:${U.id}`;U.rpcUrl&&(x[D]=U.rpcUrl),U.token&&(w[D]={name:U.name,symbol:U.token,decimals:18})}let T=(0,F.createSessionManager)(C,{autoRefreshFeeOnSwitch:!0,defaultRpcUrls:x,defaultCurrencies:w,encryptionKey:t.encryptionKey});return u.current=T,T},[a,i]);(0,P.useEffect)(()=>{let C=T=>{let{walletSession:U}=T.bundle;r({type:"SET_SESSION",payload:U});let D=[];Object.values(U.namespaces).forEach(Qe=>{D.push(...Qe.accounts)}),r({type:"SET_ACCOUNTS",payload:D}),r({type:"SET_CHAIN",payload:T.bundle.activeChainId}),r({type:"SET_STATUS",payload:"connected"})},x=()=>{r({type:"RESET"})},w=T=>{r({type:"SET_CHAIN",payload:T.newChainId})};return c.on("sessionConnected",C),c.on("sessionDisconnected",x),c.on("chainChanged",w),()=>{c.off("sessionConnected",C),c.off("sessionDisconnected",x),c.off("chainChanged",w)}},[c]),(0,P.useEffect)(()=>{let C=()=>{o.clear(),r({type:"RESET"})};a.connector.onSessionExpiry(C)},[a,o]);let m=(0,P.useCallback)(C=>{if(r({type:"SET_SESSION",payload:C}),C){let x=[];Object.values(C.namespaces).forEach(D=>{x.push(...D.accounts)}),r({type:"SET_ACCOUNTS",payload:x});let w=C.namespaces.eip155?.chains?.[0],T=C.namespaces.solana?.chains?.[0],U=C.namespaces.xrpl?.chains?.[0];r({type:"SET_CHAIN",payload:w??T??U??null})}else r({type:"SET_ACCOUNTS",payload:[]}),r({type:"SET_CHAIN",payload:null})},[]),d=(0,P.useCallback)(async C=>{if(!t.siwx||!C)return!0;r({type:"SET_STATUS",payload:"authenticating"});try{let x=C.namespaces.eip155?.accounts?.[0],w=C.namespaces.solana?.accounts?.[0],T=x??w;if(!T)throw new F.WalletError("siwx_error","No account found in session");let U=x?C.namespaces.eip155.chains?.[0]??"eip155:1":C.namespaces.solana.chains?.[0]??"solana:0",D=T.includes(":")?T.split(":").pop():T,Qe=await t.siwx.createMessage({address:D,chainId:U}),qr=await a.signMessage(C,{message:Qe,address:D,chainId:U});return t.siwx.handleSignComplete&&await t.siwx.handleSignComplete({message:Qe,signature:qr}),!0}catch(x){return F.logger.error("react/provider","SIWx authentication failed:",x),t.siwx.required!==!1?(await o.clear(),r({type:"RESET"}),r({type:"SET_ERROR",payload:x instanceof Error?x:new Error("Wallet authentication failed")}),!1):!0}},[t.siwx,a,o]),h=(0,P.useCallback)(async()=>{r({type:"SET_STATUS",payload:"connecting"}),r({type:"SET_ERROR",payload:null});try{let C=await pn(a.connect(),l,"Wallet connect");await o.save(C),m(C);try{let x=u.current;if(x&&C.walletType){let T=C.namespaces.eip155?.chains?.[0]??"eip155:1";x.connect(C.walletType,T)}}catch(x){F.logger.warn("react/provider","SessionManager sync error:",x)}if(!await d(C))return;r({type:"SET_STATUS",payload:"connected"})}catch(C){let x=C instanceof Error?C.message:"Connection failed";r({type:"SET_ERROR",payload:C instanceof Error?C:new Error(x)}),r({type:"SET_STATUS",payload:"disconnected"})}},[a,o,m,l,d]),f=(0,P.useCallback)(async()=>{r({type:"SET_STATUS",payload:"connecting"}),r({type:"SET_ERROR",payload:null});try{let C=await a.connectEmbedded();if(await o.save(C),m(C),!await d(C))return;r({type:"SET_STATUS",payload:"connected"})}catch(C){let x=C instanceof Error?C.message:"Embedded wallet connection failed";r({type:"SET_ERROR",payload:C instanceof Error?C:new Error(x)}),r({type:"SET_STATUS",payload:"disconnected"})}},[a,o,m,d]),k=(0,P.useCallback)(async()=>{r({type:"SET_STATUS",payload:"connecting"}),r({type:"SET_ERROR",payload:null});try{let C=await a.connectPasskeys();if(await o.save(C),m(C),!await d(C))return;r({type:"SET_STATUS",payload:"connected"})}catch(C){let x=C instanceof Error?C.message:"Passkeys connection failed";r({type:"SET_ERROR",payload:C instanceof Error?C:new Error(x)}),r({type:"SET_STATUS",payload:"disconnected"})}},[a,o,m,d]),g=(0,P.useCallback)(async()=>{if(!s.session){r({type:"RESET"});return}try{await a.disconnect(s.session)}catch(C){F.logger.error("react/provider","Disconnect error:",C)}try{let C=u.current;C&&await C.disconnect()}catch(C){F.logger.warn("react/provider","SessionManager disconnect error:",C)}await o.clear(),r({type:"RESET"})},[a,s.session,o]),E=(0,P.useCallback)(async C=>{r({type:"SET_STATUS",payload:"connecting"}),r({type:"SET_ERROR",payload:null});try{let x=await pn(a.connectInjected(C),l,"Injected wallet connect");await o.save(x),m(x);try{let w=u.current;if(w){let U=x.namespaces.eip155?.chains?.[0]??"eip155:1";w.connect("eip6963",U)}}catch(w){F.logger.warn("react/provider","SessionManager sync error:",w)}if(!await d(x))return;r({type:"SET_STATUS",payload:"connected"})}catch(x){let w=x instanceof Error?x.message:"Connection failed";r({type:"SET_ERROR",payload:x instanceof Error?x:new Error(w)}),r({type:"SET_STATUS",payload:"disconnected"})}},[a,o,m,l,d]),S=(0,P.useCallback)(async()=>a.startPairing(),[a]),A=(0,P.useCallback)(async()=>{let C=await a.completePairing();return await o.save(C),m(C),await d(C)&&r({type:"SET_STATUS",payload:"connected"}),C},[a,o,m,d]),y=(0,P.useCallback)(async()=>{let C=await o.load();if(!C){r({type:"SET_STATUS",payload:"disconnected"});return}r({type:"SET_STATUS",payload:"reconnecting"});try{let x=await ss(()=>a.reconnect(C),{maxRetries:p,baseDelay:1e3,label:"reconnect"});m(x);try{let w=u.current;w&&await w.restoreFromPersistence()}catch(w){F.logger.warn("react/provider","SessionManager restore error:",w)}r({type:"SET_STATUS",payload:"connected"})}catch(x){F.logger.error("react/provider","Reconnect error:",x),await o.clear(),r({type:"SET_STATUS",payload:"disconnected"}),r({type:"SET_SESSION",payload:null})}},[a,o,m,p]),v=(0,P.useCallback)(async C=>{let x=u.current;if(x){await x.switchChain(C),r({type:"SET_CHAIN",payload:C});return}if(!s.session)throw new Error("No active session");try{s.session.walletType==="eip6963"||s.session.id?.startsWith("eip6963-")?await dn.eip6963Connector.switchChain(s.session,C):s.session.walletType==="solana"&&a.solanaConnector?await a.solanaConnector.switchChain?.(s.session,C):await a.connector.switchChain(s.session,C),r({type:"SET_CHAIN",payload:C})}catch(w){throw new F.WalletError("chain_unsupported","Failed to switch chain",w)}},[a,s.session]);(0,P.useEffect)(()=>{n&&y()},[n,y]);let R=(0,P.useCallback)(()=>{r({type:"SET_ERROR",payload:null})},[]),b=(0,P.useMemo)(()=>({...s,connect:h,connectEmbedded:f,connectPasskeys:k,disconnect:g,reconnect:y,switchChain:v,startPairing:S,completePairing:A,connectInjected:E,clearError:R,isConnected:s.status==="connected",chains:i,sessionManager:c}),[s,h,f,k,g,y,v,S,A,E,R,i,c]);return(0,gn.jsx)(et.Provider,{value:b,children:e})}function I(){let e=(0,P.useContext)(et);if(!e)throw new Error("useWeb3 must be used within a Web3ConnectProvider");return e}function Cn(){let{status:e,session:t,accounts:n,chainId:s,error:r,connect:i,disconnect:l,reconnect:p,switchChain:o}=I(),a=e==="connected",u=e==="connecting",c=e==="reconnecting",m=n[0]??null;return{status:e,session:t,accounts:n,chainId:s,error:r,isConnected:a,isConnecting:u,isReconnecting:c,isDisconnected:e==="disconnected",currentAccount:m,connect:i,disconnect:l,reconnect:p,switchChain:o}}var He=require("react");var Sn=require("@naculus/connect-core");function hn(){let{connect:e,status:t}=I(),[n,s]=(0,He.useState)(!1),[r,i]=(0,He.useState)(null);return{connect:(0,He.useCallback)(async()=>{s(!0),i(null);try{await e()}catch(p){let o=p instanceof Error?p.message:"Connection failed";i(p instanceof Sn.WalletError?p:new Error(o))}finally{s(!1)}},[e]),isConnecting:n||t==="connecting",error:r}}var ye=require("react");function En(){let{disconnect:e,status:t}=I(),[n,s]=(0,ye.useState)(!1),[r,i]=(0,ye.useState)(null),l=(0,ye.useRef)(!0);return{disconnect:(0,ye.useCallback)(async()=>{if(t!=="disconnected"){s(!0),i(null);try{await e()}catch(o){if(!l.current)return;i(o instanceof Error?o:new Error("Disconnect failed"))}finally{l.current&&s(!1)}}},[e,t]),isDisconnecting:n,error:r,cleanup:()=>{l.current=!1}}}var kn=require("react");function G(){let{accounts:e,session:t,isConnected:n}=I(),s=(0,kn.useMemo)(()=>!n||e.length===0?null:e.map(i=>{let l=/^eip155:\d+:0x[0-9a-fA-F]{40}$/.test(i),p=/^0x[0-9a-fA-F]{40}$/.test(i);return{address:i,isEVM:l||p}}),[e,n]),r=s?.find(i=>i.isEVM)?.address??null;return{accounts:s,evmAccount:r,primaryAccount:e[0]??null,isConnected:n,count:e.length}}var tt=require("react");function he(){let{chainId:e,session:t,switchChain:n,chains:s}=I(),r=(0,tt.useMemo)(()=>e?Je(s,e)??null:null,[e,s]),i=(0,tt.useMemo)(()=>{if(!e||!t)return null;let p=e.startsWith("eip155:")?"eip155":null;if(!p)return null;let o=e.includes(":")?parseInt(e.split(":")[1],10):parseInt(e,10),a=s.find(u=>u.namespace===p&&u.id===o);return{namespace:p,chainId:e,name:a?.name??`Chain ${o}`,selected:!0}},[e,t,s]),l=(0,tt.useMemo)(()=>s,[s]);return{chainId:e,currentChain:r,chainInfo:i,availableChains:l,chains:l,isEvm:e?.startsWith("eip155:"),switchChain:n}}var Fe=require("react");var nt=require("@naculus/connect-core");function yn(){let{session:e,chainId:t}=I(),[n,s]=(0,Fe.useState)(!1),[r,i]=(0,Fe.useState)(null);return{signMessage:(0,Fe.useCallback)(async p=>{if(!e){let u=new nt.WalletError("wallet_unavailable","No active session");throw i(u),u}let o=B();if(!o){let u=new nt.WalletError("wallet_unavailable","Client not initialized");throw i(u),u}let a=Object.values(e.namespaces).flatMap(u=>u.accounts).find(u=>u.includes("0x"))??Object.values(e.namespaces)[0]?.accounts[0];if(!a){let u=new nt.WalletError("wallet_unavailable","No account found");throw i(u),u}s(!0),i(null);try{return await o.signMessage(e,{message:p,address:a,chainId:t??void 0})}catch(u){let c=u instanceof Error?u.message:"Signing failed",m=u instanceof Error?u:new Error(c);throw i(m),m}finally{s(!1)}},[e,t]),isSigning:n,error:r}}var Ie=require("react");var rt=require("@naculus/connect-core");function Ue(){let{session:e,chainId:t}=I(),[n,s]=(0,Ie.useState)("idle"),[r,i]=(0,Ie.useState)(null),l=(0,Ie.useCallback)(async o=>{if(!e){s("failed");let c=new rt.WalletError("wallet_unavailable","No active session");throw i(c),c}let a=B();if(!a){s("failed");let c=new rt.WalletError("wallet_unavailable","Client not initialized");throw i(c),c}let u=Object.values(e.namespaces).flatMap(c=>c.accounts).find(c=>c.includes("0x"));if(!u){s("failed");let c=new rt.WalletError("wallet_unavailable","No EVM account found");throw i(c),c}s("awaiting_approval"),i(null);try{let c={...o,from:o.from??u.split(":").pop()},m=await a.sendTransaction(e,{transaction:c,chainId:t??void 0});return s("confirmed"),m}catch(c){s("failed");let m=c instanceof Error?c.message:"Transaction failed";throw i(c instanceof Error?c:new Error(m)),c}},[e,t]),p=(0,Ie.useCallback)(()=>{s("idle"),i(null)},[]);return{sendTransaction:l,status:n,error:r,reset:p,isSending:n==="awaiting_approval"}}var de=require("react");var Ae=require("@naculus/connect-core");function An(){let{session:e,chainId:t}=I(),[n,s]=(0,de.useState)("idle"),[r,i]=(0,de.useState)(null),[l,p]=(0,de.useState)(null),[o,a]=(0,de.useState)(null),u=(0,de.useCallback)(async(d,h)=>{if(!e){s("failed");let k=new Ae.WalletError("wallet_unavailable","No active session");throw i(k),k}let f=B();if(!f){s("failed");let k=new Ae.WalletError("wallet_unavailable","Client not initialized");throw i(k),k}if(d.length===0){s("failed");let k=new Ae.WalletError("invalid_input","At least one call is required");throw i(k),k}s("awaiting_approval"),i(null),p(null);try{let k=await f.sendCalls(e,d,h?.chainId??t??void 0);return s("confirmed"),p(k),k}catch(k){s("failed");let g=k instanceof Error?k.message:"sendCalls failed";throw i(k instanceof Error?k:new Error(g)),k}},[e,t]),c=(0,de.useCallback)(async d=>{if(!e)throw new Ae.WalletError("wallet_unavailable","No active session");let h=B();if(!h)throw new Ae.WalletError("wallet_unavailable","Client not initialized");let f=d??l;if(!f)throw new Ae.WalletError("invalid_input","No bundle hash available");let k=await h.getCallsStatus(e,f);return a(k),k},[e,l]),m=(0,de.useCallback)(()=>{s("idle"),i(null),p(null),a(null)},[]);return{sendCalls:u,getCallsStatus:c,status:n,error:r,batchHash:l,callsStatus:o,reset:m,isSending:n==="awaiting_approval"}}var H=require("react");var Pe=require("viem"),xn=require("@naculus/connect-core");function vn(e){let{evmAccount:t,isConnected:n}=G(),{chainId:s,chains:r}=I(),[i,l]=(0,H.useState)(null),[p,o]=(0,H.useState)(!1),[a,u]=(0,H.useState)(null),[c,m]=(0,H.useState)(null),d=e?.refreshInterval,h=(0,H.useRef)(null),f=(0,H.useMemo)(()=>{if(!s||!r.length)return null;let v=s.startsWith("eip155:")?"eip155":null;if(!v)return null;let R=s.split(":")[1],b=Number(R);return!Number.isFinite(b)||b<=0?null:r.find(C=>C.namespace===v&&C.id===b)??null},[s,r]),k=(0,H.useMemo)(()=>f?.token??"ETH",[f]),[g,E]=(0,H.useState)(null);(0,H.useEffect)(()=>{if(!f?.rpcUrl){E(null);return}let v=(0,Pe.createPublicClient)({transport:(0,Pe.http)(f.rpcUrl),chain:{id:f.id,name:f.name,nativeCurrency:{name:f.token??"ETH",symbol:f.token??"ETH",decimals:18},rpcUrls:{default:{http:[f.rpcUrl]},public:{http:[f.rpcUrl]}}}});return E(v),()=>{}},[f]);let S=(0,H.useCallback)(async()=>{if(!t||!g){l(null);return}o(!0),u(null);try{let R=t.includes(":")?t.split(":").pop():t,[b,C]=await Promise.all([g.getBalance({address:R}),s?(0,xn.getNativeTokenPriceUsd)(s,f?.rpcUrl).catch(()=>null):Promise.resolve(null)]);l(b.toString()),m(C)}catch(v){u(v instanceof Error?v:new Error("Failed to fetch balance")),l(null),m(null)}finally{o(!1)}},[t,g,s,f?.rpcUrl]);(0,H.useEffect)(()=>{n&&t&&S()},[n,t,S]),(0,H.useEffect)(()=>(d&&d>0&&n&&t&&(h.current=setInterval(S,d)),()=>{h.current&&(clearInterval(h.current),h.current=null)}),[d,n,t,S]);let A=(0,H.useMemo)(()=>{if(i===null)return null;try{return(0,Pe.formatEther)(BigInt(i))}catch{return null}},[i]),y=(0,H.useMemo)(()=>{if(c===null||A===null)return null;let v=parseFloat(A);if(isNaN(v))return null;let R=v*c;return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:2,maximumFractionDigits:2}).format(R)},[c,A]);return{balance:i,formatted:A,symbol:k,usdPrice:c,usdValue:y,isLoading:p,error:a,refetch:S,chain:f}}var $=require("react");var We=require("viem");function wn(e){let{evmAccount:t,isConnected:n}=G(),{chainId:s,chains:r}=I(),[i,l]=(0,$.useState)([]),[p,o]=(0,$.useState)(!1),[a,u]=(0,$.useState)(null),{tokens:c,refreshInterval:m}=e,d=(0,$.useRef)(null),h=(0,$.useMemo)(()=>c.map(y=>y.address.toLowerCase()+"|"+y.decimals+"|"+y.symbol).join(","),[c]),f=(0,$.useMemo)(()=>{if(!s||!r.length)return null;let y=s.startsWith("eip155:")?"eip155":null;if(!y)return null;let v=parseInt(s.split(":")[1],10);return r.find(R=>R.namespace===y&&R.id===v)??null},[s,r]),[k,g]=(0,$.useState)(null);(0,$.useEffect)(()=>{if(!f?.rpcUrl){g(null);return}let y=(0,We.createPublicClient)({transport:(0,We.http)(f.rpcUrl),chain:{id:f.id,name:f.name,nativeCurrency:{name:f.token??"ETH",symbol:f.token??"ETH",decimals:18},rpcUrls:{default:{http:[f.rpcUrl]},public:{http:[f.rpcUrl]}}}});g(y)},[f]);let E=[{name:"balanceOf",type:"function",stateMutability:"view",inputs:[{name:"owner",type:"address"}],outputs:[{name:"balance",type:"uint256"}]}],S=(0,$.useCallback)(async()=>{if(!t||!k||c.length===0){l([]);return}o(!0),u(null);try{let y=t.includes(":")?t.split(":").pop():t,R=(await Promise.allSettled(c.map(async b=>{try{let C=await k.readContract({address:b.address,abi:E,functionName:"balanceOf",args:[y]});return{address:b.address,symbol:b.symbol,decimals:b.decimals,name:b.name,balance:C.toString(),formatted:(0,We.formatUnits)(C,b.decimals)}}catch{return{address:b.address,symbol:b.symbol,decimals:b.decimals,name:b.name,balance:null,formatted:null}}}))).map(b=>b.status==="fulfilled"?b.value:{address:"",symbol:"?",decimals:0,balance:null,formatted:null});l(R)}catch(y){u(y instanceof Error?y:new Error("Failed to fetch token balances"))}finally{o(!1)}},[t,k,h]);(0,$.useEffect)(()=>{n&&t&&c.length>0&&S()},[n,t,h,S]),(0,$.useEffect)(()=>(m&&m>0&&n&&t&&c.length>0&&(d.current=setInterval(S,m)),()=>{d.current&&(clearInterval(d.current),d.current=null)}),[m,n,t,h,S]);let A=(0,$.useCallback)(y=>i.find(v=>v.address.toLowerCase()===y.toLowerCase()),[i]);return{tokenBalances:i,isLoading:p,error:a,refetch:S,getTokenBalance:A,chain:f}}var Oe=require("react");var Kt=require("react"),xe=require("viem");function ie(){let{evmAccount:e,isConnected:t}=G(),{currentChain:n,chains:s}=he(),r=(0,Kt.useMemo)(()=>n?.rpcUrl?(0,xe.createPublicClient)({transport:(0,xe.http)(n.rpcUrl),chain:{id:n.id,name:n.name,nativeCurrency:{name:n.token??"ETH",symbol:n.token??"ETH",decimals:18},rpcUrls:{default:{http:[n.rpcUrl]},public:{http:[n.rpcUrl]}}}}):null,[n]),i=(0,Kt.useMemo)(()=>{if(!t||!e||!n?.rpcUrl)return null;let l=e.includes(":")?e.split(":").pop():e;return(0,xe.createWalletClient)({transport:(0,xe.http)(n.rpcUrl),chain:{id:n.id,name:n.name,nativeCurrency:{name:n.token??"ETH",symbol:n.token??"ETH",decimals:18},rpcUrls:{default:{http:[n.rpcUrl]},public:{http:[n.rpcUrl]}}},account:l})},[t,e,n]);return{publicClient:r,walletClient:i,chains:s}}var me=require("@naculus/connect-core"),bn=require("viem");function as(e){return e.includes(":")?e.split(":").pop():e}function is(e,t){return(0,bn.encodeFunctionData)({abi:me.ERC20_MIN_ABI,functionName:"transfer",args:[e,t]})}function Tn(e){let{publicClient:t,walletClient:n}=ie(),{evmAccount:s,isConnected:r}=G(),{session:i}=I(),{sendTransaction:l,isSending:p,error:o,reset:a}=Ue(),[u,c]=(0,Oe.useState)(null),m=(0,Oe.useRef)(e.token.decimals),d=u??o;return{sendTransfer:(0,Oe.useCallback)(async(f,k)=>{if(c(null),a(),!r||!s){let y=new me.WalletError("wallet_unavailable","No connected account");throw c(y),y}if(!t){let y=new me.WalletError("wallet_unavailable","No public client available");throw c(y),y}let g=as(s),E=m.current;E===void 0&&(E=await t.readContract({address:e.token.address,abi:me.ERC20_MIN_ABI,functionName:"decimals"}),m.current=E);let S=(0,me.parseUnits)(k,E),A=is(f,S);try{if(i&&B())return await l({to:e.token.address,data:A,value:"0"});if(n){let{request:v}=await t.simulateContract({address:e.token.address,abi:me.ERC20_MIN_ABI,functionName:"transfer",args:[f,S],account:g});return await n.writeContract(v)}return await l({to:e.token.address,data:A,value:"0"})}catch(y){let v=y instanceof Error?y:new Error("Transfer failed");throw c(v),v}},[e.token,t,n,s,r,i,l,a]),isSending:p,error:d}}var J=require("react");var Z=require("@naculus/connect-core"),Rn=require("viem");function ls(e){return e.includes(":")?e.split(":").pop():e}function cs(e,t){return(0,Rn.encodeFunctionData)({abi:Z.ERC20_MIN_ABI,functionName:"approve",args:[e,t]})}var us=2n**256n-1n;function In(e){let{publicClient:t,walletClient:n}=ie(),{evmAccount:s,isConnected:r}=G(),{session:i}=I(),{sendTransaction:l,isSending:p,error:o,reset:a}=Ue(),[u,c]=(0,J.useState)(null),[m,d]=(0,J.useState)(null),[h,f]=(0,J.useState)(!1),k=(0,J.useRef)(e.token.decimals),g=u??o,E=s?ls(s):null,S=(0,J.useCallback)(async()=>{if(!(!t||!E)){f(!0);try{let C=await t.readContract({address:e.token.address,abi:Z.ERC20_MIN_ABI,functionName:"allowance",args:[E,e.spender]});d(C)}catch{d(null)}finally{f(!1)}}},[t,E,e.token.address,e.spender]),A=(()=>{if(m===null)return null;let C=k.current??e.token.decimals??18,w=m.toString().padStart(C+1,"0"),T=w.length-C,U=w.slice(0,T).replace(/^0+/,"")||"0",D=w.slice(T).replace(/0+$/,"");return D?`${U}.${D}`:U})(),y=(0,J.useCallback)(async C=>{if(c(null),a(),!r||!s){let w=new Z.WalletError("wallet_unavailable","No connected account");throw c(w),w}if(!t){let w=new Z.WalletError("wallet_unavailable","No public client");throw c(w),w}let x=cs(e.spender,C);try{if(i&&B()){let U=await l({to:e.token.address,data:x,value:"0"});return S(),U}if(n){let{request:T}=await t.simulateContract({address:e.token.address,abi:Z.ERC20_MIN_ABI,functionName:"approve",args:[e.spender,C],account:E}),U=await n.writeContract(T);return S(),U}let w=await l({to:e.token.address,data:x,value:"0"});return S(),w}catch(w){let T=w instanceof Error?w:new Error("Approve failed");throw c(T),T}},[e,t,n,s,r,i,E,l,a,S]),v=(0,J.useCallback)(async C=>{if(!t)throw new Z.WalletError("wallet_unavailable","No public client");let x=k.current;x===void 0&&(x=await t.readContract({address:e.token.address,abi:Z.ERC20_MIN_ABI,functionName:"decimals"}),k.current=x);let w=(0,Z.parseUnits)(C,x);return y(w)},[e.token.address,t,y]),R=(0,J.useCallback)(async()=>y(us),[y]),b=(0,J.useCallback)(async C=>{if(m===null&&await S(),m===null)return!1;let x=k.current??e.token.decimals;x===void 0&&(x=18);let w=(0,Z.parseUnits)(C,x);return m>=w},[m,S,e.token.decimals]);return{approve:v,approveMax:R,allowance:A,allowanceRaw:m,hasAllowance:b,isApproving:p,isFetchingAllowance:h,error:g,refetchAllowance:S}}var Q=require("react");var Un=require("@naculus/connect-core");function Pn(e){let{publicClient:t}=ie(),[n,s]=(0,Q.useState)(null),[r,i]=(0,Q.useState)(!1),[l,p]=(0,Q.useState)(null),o=(0,Q.useRef)(null),a=(0,Q.useCallback)(async()=>{if(t){i(!0),p(null);try{let c=await t.readContract({address:e.token.address,abi:Un.ERC20_MIN_ABI,functionName:"allowance",args:[e.owner,e.spender]});s(c)}catch(c){p(c instanceof Error?c:new Error("Failed to fetch allowance")),s(null)}finally{i(!1)}}},[t,e.token.address,e.owner,e.spender]);return(0,Q.useEffect)(()=>{a().catch(c=>console.warn("useERC20Allowance: initial fetch failed:",c))},[a]),(0,Q.useEffect)(()=>(e.refreshInterval&&e.refreshInterval>0&&(o.current=setInterval(a,e.refreshInterval)),()=>{o.current&&(clearInterval(o.current),o.current=null)}),[e.refreshInterval,a]),{allowance:(0,Q.useMemo)(()=>{if(n===null)return null;let c=e.token.decimals??18,d=n.toString().padStart(c+1,"0"),h=d.length-c,f=d.slice(0,h).replace(/^0+/,"")||"0",k=d.slice(h).replace(/0+$/,"");return k?`${f}.${k}`:f},[n,e.token.decimals]),allowanceRaw:n,isFetching:r,error:l,refetch:a}}var fe=require("react");var Wn=require("@naculus/connect-core");function On(){let{connectEmbedded:e}=I(),[t,n]=(0,fe.useState)(null),s=(0,fe.useRef)(null),[r,i]=(0,fe.useState)(!1),[l,p]=(0,fe.useState)(!1),[o,a]=(0,fe.useState)(null),u=()=>a(null),c=(0,fe.useCallback)(()=>{let S=s.current;return s.current=null,S},[]),m=()=>{let S=B();if(!S?.embeddedConnector)throw new Wn.WalletError("wallet_unavailable","Embedded wallet not enabled.");return S.embeddedConnector},d=async()=>{p(!0),a(null);try{let S=m(),A=await S.load(),y=S.getWallet();A&&y&&(n(y),s.current=y.mnemonic||null,i(!y.mnemonic)),await e();let v=S.getWallet();v&&(n(v),v.mnemonic&&!A&&(s.current=v.mnemonic,i(!0)))}catch(S){a(S instanceof Error?S:new Error("Embedded wallet connection failed"))}finally{p(!1)}},h=async()=>{p(!0),a(null);try{let A=await m().generateWallet();return n(A),s.current=A.mnemonic,i(!0),A}catch(S){return a(S instanceof Error?S:new Error("Failed to generate wallet")),null}finally{p(!1)}},f=async S=>{p(!0),a(null);try{let y=await m().importFromMnemonic(S);return n(y),s.current=null,i(!1),y}catch(A){return a(A instanceof Error?A:new Error("Failed to import wallet")),null}finally{p(!1)}},k=async S=>{p(!0),a(null);try{let y=await m().importFromPrivateKey(S);return n(y),s.current=null,i(!1),y}catch(A){return a(A instanceof Error?A:new Error("Failed to import wallet")),null}finally{p(!1)}},g=()=>{try{m().wipe(),n(null),s.current=null,i(!1)}catch(S){a(S instanceof Error?S:new Error("Failed to wipe wallet"))}},E=()=>{s.current=null,i(!1)};return{connectEmbedded:d,generateWallet:h,importFromMnemonic:f,importFromPrivateKey:k,wipe:g,wallet:t,hasWallet:t!==null,address:t?.address??null,seedPhrase:s.current,getSeedPhrase:c,backupPending:r,confirmBackup:E,isBusy:l,error:o,clearError:u,storageSecurityLevel:(()=>{try{return m().getStorageSecurityLevel?.()??4}catch{return 4}})()}}var Ln=require("react");var ps={"storage.critical.title":"Insecure Storage Detected","storage.critical.body":"Your browser does not support IndexedDB. Wallet data is stored in plaintext in localStorage and could be exposed to XSS attacks. We strongly recommend switching to a modern browser.","storage.warning.title":"Storage Security Warning","storage.warning.body":"Your browser does not support IndexedDB, but your wallet data is encrypted with AES-256-GCM. Consider switching browsers for better origin isolation.","address.empty":"Address is empty","address.invalid_format":"Invalid address format (expected 0x + 40 hex chars)","address.zero_address":"Address is the zero address \u2014 funds would be permanently lost","address.burn_address":"Address appears to be a burn address \u2014 funds would be permanently lost","wallet.connect":"Connect Wallet","wallet.disconnect":"Disconnect","wallet.connecting":"Connecting...","wallet.copy_address":"Copy address","wallet.copied":"Copied!","wallet.view_on_explorer":"View on Explorer","wallet.retry":"Retry","wallet.connection_failed":"Connection failed","wallet.scan_qr":"Scan with your wallet app","embedded.generate":"Create Wallet","embedded.import":"Import Wallet","embedded.backup_seed":"Back up your seed phrase","embedded.backup_warning":"Anyone with your seed phrase can access your funds. Store it securely.","embedded.backup_done":"I've saved my seed phrase","embedded.wipe":"Remove Wallet","embedded.wipe_confirm":"Are you sure? This cannot be undone."},ds={"storage.critical.title":"\u5075\u6E2C\u5230\u4E0D\u5B89\u5168\u5132\u5B58","storage.critical.body":"\u60A8\u7684\u700F\u89BD\u5668\u4E0D\u652F\u63F4 IndexedDB\u3002\u9322\u5305\u8CC7\u6599\u4EE5\u660E\u6587\u5132\u5B58\u5728 localStorage \u4E2D\uFF0C\u53EF\u80FD\u66B4\u9732\u65BC XSS \u653B\u64CA\u3002\u5F37\u70C8\u5EFA\u8B70\u66F4\u63DB\u81F3\u73FE\u4EE3\u700F\u89BD\u5668\u3002","storage.warning.title":"\u5132\u5B58\u5B89\u5168\u8B66\u544A","storage.warning.body":"\u60A8\u7684\u700F\u89BD\u5668\u4E0D\u652F\u63F4 IndexedDB\uFF0C\u4F46\u9322\u5305\u8CC7\u6599\u5DF2\u4F7F\u7528 AES-256-GCM \u52A0\u5BC6\u3002\u5EFA\u8B70\u66F4\u63DB\u700F\u89BD\u5668\u4EE5\u7372\u5F97\u66F4\u597D\u7684\u9694\u96E2\u4FDD\u8B77\u3002","address.empty":"\u5730\u5740\u70BA\u7A7A","address.invalid_format":"\u7121\u6548\u7684\u5730\u5740\u683C\u5F0F\uFF08\u61C9\u70BA 0x + 40 \u500B\u5341\u516D\u9032\u4F4D\u5B57\u5143\uFF09","address.zero_address":"\u6B64\u70BA\u96F6\u5730\u5740 \u2014 \u8CC7\u91D1\u5C07\u6C38\u4E45\u4E1F\u5931","address.burn_address":"\u6B64\u5730\u5740\u70BA\u71D2\u6BC0\u5730\u5740 \u2014 \u8CC7\u91D1\u5C07\u6C38\u4E45\u4E1F\u5931","wallet.connect":"\u9023\u63A5\u9322\u5305","wallet.disconnect":"\u65B7\u958B\u9023\u7DDA","wallet.connecting":"\u9023\u7DDA\u4E2D...","wallet.copy_address":"\u8907\u88FD\u5730\u5740","wallet.copied":"\u5DF2\u8907\u88FD\uFF01","wallet.view_on_explorer":"\u5728\u700F\u89BD\u5668\u67E5\u770B","wallet.retry":"\u91CD\u8A66","wallet.connection_failed":"\u9023\u7DDA\u5931\u6557","wallet.scan_qr":"\u4F7F\u7528\u9322\u5305 App \u6383\u63CF","embedded.generate":"\u5EFA\u7ACB\u9322\u5305","embedded.import":"\u532F\u5165\u9322\u5305","embedded.backup_seed":"\u5099\u4EFD\u52A9\u8A18\u8A5E","embedded.backup_warning":"\u4EFB\u4F55\u4EBA\u53D6\u5F97\u60A8\u7684\u52A9\u8A18\u8A5E\u90FD\u53EF\u4EE5\u5B58\u53D6\u60A8\u7684\u8CC7\u91D1\u3002\u8ACB\u5B89\u5168\u5132\u5B58\u3002","embedded.backup_done":"\u6211\u5DF2\u5132\u5B58\u52A9\u8A18\u8A5E","embedded.wipe":"\u79FB\u9664\u9322\u5305","embedded.wipe_confirm":"\u78BA\u5B9A\u8981\u79FB\u9664\u55CE\uFF1F\u6B64\u64CD\u4F5C\u7121\u6CD5\u5FA9\u539F\u3002"},_n={en:ps,zh:ds},jt="en";function Nn(e){jt=e}function Dn(){return jt}function ve(e){return _n[jt][e]??_n.en[e]??e}var Mn="0x0000000000000000000000000000000000000000",ms=new Set([Mn,"0x0000000000000000000000000000000000000001","0x000000000000000000000000000000000000dead","0x000000000000000000000000000000000000dEaD"]);function fs(e){let t=e.toLowerCase();return ms.has(t)?!0:t.includes("dead")&&t.length>=40}function gs(e){return e===Mn}function Cs(e){return/^0x[0-9a-fA-F]{40}$/.test(e)}function Vt(e){return e?Cs(e)?gs(e)?{isValid:!1,level:"blocked",warning:ve("address.zero_address")}:fs(e)?{isValid:!1,level:"blocked",warning:ve("address.burn_address")}:{isValid:!0,level:"safe",warning:null}:{isValid:!1,level:"blocked",warning:ve("address.invalid_format")}:{isValid:!1,level:"blocked",warning:ve("address.empty")}}function Bn({address:e}){return{validation:(0,Ln.useMemo)(()=>Vt(e),[e])}}var we=require("react");var st=require("@naculus/connect-core"),Ee=require("@naculus/siwx");function Ss(){return typeof window<"u"?window.location.host:"localhost"}function hs(){return typeof window<"u"?window.location.origin:"http://localhost"}function _e(){let{session:e,chainId:t}=I(),[n,s]=(0,we.useState)(!1),[r,i]=(0,we.useState)(null),[l,p]=(0,we.useState)(null),o=(0,we.useCallback)(()=>p(null),[]);return{signIn:(0,we.useCallback)(async u=>{if(!e)throw new st.WalletError("wallet_unavailable","No active session");let c=B();if(!c)throw new st.WalletError("wallet_unavailable","Client not initialized");let m=Object.entries(e.namespaces).flatMap(([A,y])=>y.accounts.map(v=>({ns:A,acc:v})));if(m.length===0)throw new st.WalletError("wallet_unavailable","No account found");let{acc:d}=m[0],h=u?.chainId??t??"eip155:1",f=u?.domain??Ss(),k=u?.uri??hs(),g=(0,Ee.generateNonce)(),E=(0,Ee.nowISO)(),S=(0,Ee.createSiwxMessage)({domain:f,address:d,uri:k,version:1,chainId:h,nonce:g,issuedAt:E,statement:u?.statement,expirationTime:u?.expirySeconds?new Date(Date.now()+u.expirySeconds*1e3).toISOString():void 0,resources:u?.resources,requestId:u?.requestId});s(!0),p(null);try{let A=await c.signMessage(e,{message:S,address:d,chainId:h??void 0}),y=u?.expirySeconds?new Date(Date.now()+u.expirySeconds*1e3).toISOString():null,v={message:{raw:S,domain:f,address:d,statement:u?.statement??null,uri:k,version:1,chainId:h,nonce:g,issuedAt:E,blockchain:(0,Ee.getBlockchainName)(h),expirationTime:y,notBefore:null,resources:u?.resources??[],requestId:u?.requestId??null},signature:A};return i(v),v}catch(A){let y=A instanceof Error?A:new Error("SIWx sign-in failed");throw p(y),y}finally{s(!1)}},[e,t]),isSigningIn:n,result:r,error:l,clearError:o}}var qt=require("@naculus/connect-core");var zt=require("react");function Es(){let{session:e}=I();return(0,zt.useCallback)(()=>{if(!e)throw new qt.WalletError("wallet_unavailable","No active session");let t=e.namespaces.eip155;if(!t||t.accounts.length===0)throw new qt.WalletError("namespace_mismatch","No EVM (eip155) accounts found in session")},[e])}function Hn(){let e=Es(),t=_e();return{signIn:(0,zt.useCallback)(async s=>(e(),t.signIn(s)),[e,t.signIn]),isSigningIn:t.isSigningIn,result:t.result,error:t.error,clearError:t.clearError}}var X=require("react");var be=require("@naculus/connect-core"),ot="siwx_auth";function ks(e){return new be.LocalStorageAdapter(e)}function ys(e,t){return e.message.expirationTime?new Date(e.message.expirationTime).getTime()<=t.getTime():!1}function As(e,t){return e.message.notBefore?new Date(e.message.notBefore).getTime()<=t.getTime():!0}function Fn(e){let{storagePrefix:t="naculus_",autoRestore:n=!0}=e??{},[s,r]=(0,X.useState)(null),[i,l]=(0,X.useState)(n),[p,o]=(0,X.useState)(!1),[a,u]=(0,X.useState)(null),c=_e(),m=(0,X.useRef)(ks(t)),d=(0,X.useCallback)(()=>u(null),[]);(0,X.useEffect)(()=>{if(!n){l(!1);return}let k=!1;return(async()=>{try{let g=m.current,E=await g.get(ot);if(k)return;E&&!ys(E,new Date)&&As(E,new Date)?(be.logger.info("react/useSiwxAuthSession","Restored persisted SIWx auth session"),r(E),u(null)):E&&(be.logger.info("react/useSiwxAuthSession","Persisted SIWx auth expired, clearing"),await g.remove(ot))}catch(g){be.logger.warn("react/useSiwxAuthSession","Failed to restore SIWx auth:",g)}finally{k||l(!1)}})(),()=>{k=!0}},[n]);let h=(0,X.useCallback)(async k=>{o(!0),u(null);try{let g=await c.signIn(k);return await m.current.set(ot,g),r(g),o(!1),g}catch(g){let E=g instanceof Error?g:new Error("SIWx sign-in failed");throw u(E),o(!1),E}},[c]),f=(0,X.useCallback)(async()=>{try{await m.current.remove(ot)}catch(k){be.logger.warn("react/useSiwxAuthSession","Failed to clear SIWx auth:",k)}r(null),u(null)},[]);return{isSignedIn:s!==null,isRestoring:i,siwxResult:s,isSigningIn:p,error:a,signIn:h,signOut:f,clearError:d}}var Ne=require("react");var at=require("@naculus/connect-core"),ke=require("@naculus/siwx"),xs=86400;function vs(){return typeof window<"u"?window.location.host:"localhost"}function ws(){return typeof window<"u"?window.location.origin:"http://localhost"}function it(){let{session:e,chainId:t}=I(),[n,s]=(0,Ne.useState)(!1),[r,i]=(0,Ne.useState)(null),l=(0,Ne.useCallback)(()=>i(null),[]);return{signIn:(0,Ne.useCallback)(async o=>{if(!e)throw new at.WalletError("wallet_unavailable","No active session");let a=B();if(!a)throw new at.WalletError("wallet_unavailable","Client not initialized");let u=Object.entries(e.namespaces).flatMap(([A,y])=>y.accounts.map(v=>({ns:A,acc:v})));if(u.length===0)throw new at.WalletError("wallet_unavailable","No account found");let{acc:c}=u[0],m=o?.chainId??t??"eip155:1",d=o?.domain??vs(),h=o?.uri??ws(),f=(0,ke.generateNonce)(),k=(0,ke.nowISO)(),g=o?.expirySeconds??xs,E=new Date(Date.now()+g*1e3).toISOString(),S=(0,ke.createSiwxMessage)({domain:d,address:c,uri:h,version:1,chainId:m,nonce:f,issuedAt:k,expirationTime:E,statement:o?.statement,resources:o?.resources,requestId:o?.requestId});s(!0),i(null);try{let A=await a.signMessage(e,{message:S,address:c,chainId:m??void 0}),y={message:{raw:S,domain:d,address:c,statement:o?.statement??null,uri:h,version:1,chainId:m,nonce:f,issuedAt:k,blockchain:(0,ke.getBlockchainName)(m),expirationTime:E,notBefore:null,resources:o?.resources??[],requestId:o?.requestId??null},signature:A};return s(!1),y}catch(A){let y=A instanceof Error?A:new Error("SIWx sign-in failed");throw i(y),s(!1),y}},[e,t]),isSigningIn:n,error:r,clearError:l}}var K=require("react");var lt=require("@naculus/connect-core"),Ge=require("@naculus/siwx");function Gn(e){return{id:`siwx_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`,chainId:e.message.chainId,address:e.message.address,domain:e.message.domain,message:e.message,signature:e.signature,issuedAt:e.message.issuedAt??new Date().toISOString(),expiresAt:e.message.expirationTime,refreshedAt:null}}function $n(e){let{storagePrefix:t="naculus_",autoRestore:n=!0,defaultExpirySeconds:s=86400}=e??{},[r,i]=(0,K.useState)(null),[l,p]=(0,K.useState)(n),[o,a]=(0,K.useState)(!1),[u,c]=(0,K.useState)(null),{session:m,chainId:d}=I(),h=it(),f=(0,K.useRef)((0,Ge.createLocalStorageSiwxSessionStorage)(`${t}siwx_session`)),k=(0,K.useCallback)(()=>c(null),[]);(0,K.useEffect)(()=>{if(!n){p(!1);return}let R=!1;return(async()=>{try{let C=await f.current.get();if(R)return;C?(lt.logger.info("react/useSIWxSession","Restored persisted SIWx session"),i(C),c(null)):i(null)}catch(b){lt.logger.warn("react/useSIWxSession","Failed to restore SIWx session:",b),i(null)}finally{R||p(!1)}})(),()=>{R=!0}},[n]),(0,K.useEffect)(()=>{if(!r?.expiresAt)return;let R=new Date(r.expiresAt).getTime()-Date.now();if(R<=0){i(null);return}let b=setTimeout(()=>{i(C=>C&&C.id===r.id?null:C)},R);return()=>clearTimeout(b)},[r?.id,r?.expiresAt]);let g=(0,K.useCallback)(async R=>{a(!0),c(null);try{let b={expirySeconds:s,chainId:d??void 0,...R},C=await h.signIn(b),x=Gn(C);return await f.current.set(x),i(x),a(!1),x}catch(b){let C=b instanceof Error?b:new Error("SIWx sign-in failed");throw c(C),a(!1),C}},[h,d,s]),E=(0,K.useCallback)(async()=>{try{await f.current.remove()}catch(R){lt.logger.warn("react/useSIWxSession","Failed to clear session:",R)}i(null),c(null)},[]),S=(0,K.useCallback)(async()=>{if(!r)throw new Error("No active session to refresh");a(!0),c(null);try{let R=await h.signIn({domain:r.domain,statement:r.message.statement??void 0,uri:r.message.uri,chainId:r.chainId,expirySeconds:s,resources:r.message.resources.length>0?r.message.resources:void 0,requestId:r.message.requestId??void 0}),b={...Gn(R),id:r.id,refreshedAt:new Date().toISOString()};return await f.current.set(b),i(b),a(!1),b}catch(R){let b=R instanceof Error?R:new Error("Session refresh failed");throw c(b),a(!1),b}},[r,h,s]),A=r!==null&&!(0,Ge.checkSessionExpired)(r),y=(0,Ge.checkSessionExpired)(r),v=r?.expiresAt?Math.max(0,new Date(r.expiresAt).getTime()-Date.now()):null;return{session:A?r:null,isAuthenticated:A,isRestoring:l,isSigningIn:o,isExpired:y,timeUntilExpiry:v,signIn:g,signOut:E,refresh:S,error:u,clearError:k}}var N=require("react");var De=require("@naculus/connect-core"),ct=null;function ut(e){return ct||(ct=new De.SessionKeyManager(e,typeof window<"u"?void 0:new De.MemoryStorageAdapter)),ct}function Kn(){let{session:e}=I(),[t,n]=(0,N.useState)([]),[s,r]=(0,N.useState)(!1),[i,l]=(0,N.useState)(null),p=(0,N.useRef)(!0),o=(0,N.useCallback)(()=>l(null),[]),a=ut(),u=a.isStorageAvailable(),c=(0,N.useCallback)(async()=>{if(!e){n([]);return}r(!0),l(null);try{let d=await a.listSessions();p.current&&n(d)}catch(d){p.current&&l(d instanceof Error?d:new Error("Failed to load session keys"))}finally{p.current&&r(!1)}},[e,a]);(0,N.useEffect)(()=>(p.current=!0,c(),()=>{p.current=!1}),[c]);let m=t.filter(d=>d.status==="active");return{sessions:t,activeSessions:m,loading:s,error:i,refresh:c,clearError:o,storageAvailable:u}}function jn(){let{session:e}=I(),[t,n]=(0,N.useState)(null),[s,r]=(0,N.useState)(!1),[i,l]=(0,N.useState)(null),p=(0,N.useCallback)(()=>l(null),[]),o=ut();return{createSessionKey:(0,N.useCallback)(async(u,c)=>{if(!e)throw new De.WalletError("wallet_unavailable","No active wallet session");r(!0),l(null);try{let m=c??void 0,d=await o.createSessionKey(u,m);return n(d),d}catch(m){let d=m instanceof Error?m:new Error("Failed to create session key");throw l(d),d}finally{r(!1)}},[e,o]),lastCreated:t,isCreating:s,error:i,clearError:p}}function Vn(){let[e,t]=(0,N.useState)(!1),[n,s]=(0,N.useState)(null),r=(0,N.useCallback)(()=>s(null),[]),i=ut();return{revokeSession:(0,N.useCallback)(async p=>{t(!0),s(null);try{await i.revokeSession(p)}catch(o){let a=o instanceof Error?o:new Error("Failed to revoke session key");throw s(a),a}finally{t(!1)}},[i]),isRevoking:e,error:n,clearError:r}}function qn(){let[e,t]=(0,N.useState)(!1),[n,s]=(0,N.useState)(null),r=(0,N.useCallback)(()=>s(null),[]),i=ut(),l=(0,N.useCallback)(async(o,a)=>{t(!0),s(null);try{return await i.signWithSessionKey(o,a)}catch(u){let c=u instanceof Error?u:new Error("Failed to sign with session key");throw s(c),c}finally{t(!1)}},[i]),p=(0,N.useCallback)(async(o,a)=>{t(!0),s(null);try{return await i.checkSessionScope(o,a)}catch(u){let c=u instanceof Error?u:new Error("Failed to check session scope");throw s(c),c}finally{t(!1)}},[i]);return{signWithSession:l,checkScope:p,isBusy:e,error:n,clearError:r}}function zn(){ct=null}var V=require("react"),Xt=require("@naculus/connect-core"),Qt=null;function bs(e){return e?new Xt.NameResolver(e):(Qt||(Qt=new Xt.NameResolver),Qt)}function Qn(e,t){let[n,s]=(0,V.useState)(null),[r,i]=(0,V.useState)(!1),[l,p]=(0,V.useState)(null),o=t?.skip??!1,a=(0,V.useRef)(null),u=(0,V.useRef)(""),c=(0,V.useRef)(!0);(0,V.useEffect)(()=>(c.current=!0,()=>{c.current=!1}),[]);let m=a.current??bs(t?.resolverConfig);a.current=m;let d=(0,V.useCallback)(()=>{let f=e.trim();if(!f||o){s(null),i(!1),p(null);return}u.current===f&&n||(u.current=f,i(!0),p(null),m.resolveName(f).then(k=>{c.current&&(s(k),i(!1))}).catch(k=>{if(c.current){let g=k instanceof Error?k:new Error(String(k));p(g),s(null),i(!1)}}))},[e,o]);(0,V.useEffect)(()=>{d()},[d]);let h=(0,V.useCallback)(()=>{u.current="",d()},[d]);return{data:n,isLoading:r,error:l,refetch:h}}var q=require("react"),Jt=require("@naculus/connect-core"),Yt=null;function Ts(e){return e?new Jt.NameResolver(e):(Yt||(Yt=new Jt.NameResolver),Yt)}function Xn(e,t){let[n,s]=(0,q.useState)(null),[r,i]=(0,q.useState)(!1),[l,p]=(0,q.useState)(null),o=t?.chainId,a=t?.skip??!1,u=(0,q.useRef)(null),c=(0,q.useRef)(""),m=(0,q.useRef)(!0);(0,q.useEffect)(()=>(m.current=!0,()=>{m.current=!1}),[]);let d=u.current??Ts(t?.resolverConfig);u.current=d;let h=(0,q.useCallback)(()=>{let k=e.trim();if(!k||a){s(null),i(!1),p(null);return}c.current===k&&n||(c.current=k,i(!0),p(null),d.lookupAddress(k,o).then(g=>{m.current&&(s(g),i(!1))}).catch(g=>{if(m.current){let E=g instanceof Error?g:new Error(String(g));p(E),s(null),i(!1)}}))},[e,o,a]);(0,q.useEffect)(()=>{h()},[h]);let f=(0,q.useCallback)(()=>{c.current="",h()},[h]);return{data:n,isLoading:r,error:l,refetch:f}}var $e=require("react");function Rs(e,t){if(!e)return()=>{};let n=()=>t();return e.on("sessionConnected",n),e.on("sessionDisconnected",n),e.on("chainChanged",n),()=>{e.off("sessionConnected",n),e.off("sessionDisconnected",n),e.off("chainChanged",n)}}function Is(e){if(!e)return{session:null,chainSessions:[],activeChainId:null,isConnected:!1,connectorId:null};let t=e.getActiveBundle();return t?{session:t.walletSession,chainSessions:Array.from(t.chainSessions.values()),activeChainId:t.activeChainId,isConnected:!0,connectorId:t.walletSession.walletType}:{session:null,chainSessions:[],activeChainId:null,isConnected:!1,connectorId:null}}function Yn(e){let t=I(),n=e??t.sessionManager??null,s=(0,$e.useCallback)(i=>Rs(n,i),[n]),r=(0,$e.useCallback)(()=>Is(n),[n]);return(0,$e.useSyncExternalStore)(s,r)}var Le=require("react");var Zt=require("@naculus/connect-core");function Jn(){let{switchChain:e,chainId:t}=I(),[n,s]=(0,Le.useState)(!1),[r,i]=(0,Le.useState)(null),l=(0,Le.useCallback)(async o=>{s(!0),i(null);try{await e(o)}catch(a){let u=a instanceof Zt.WalletError?a:new Zt.WalletError("chain_unsupported",a instanceof Error?a.message:"Unknown error during chain switch");throw i(u),u}finally{s(!1)}},[e]),p=(0,Le.useCallback)(()=>{i(null)},[]);return{switchChain:l,isSwitching:n,currentChainId:t,error:r,clearError:p}}var Te=require("react");var en={wallet_unavailable:"Wallet Not Detected",user_rejected:"Connection Rejected",deeplink_timeout:"Wallet Connection Timed Out",session_expired:"Session Expired",intent_expired:"Connection Request Expired",namespace_mismatch:"Network Mismatch",chain_unsupported:"Unsupported Network",method_not_allowed:"Action Not Allowed",signature_rejected:"Signature Rejected",tx_failed:"Transaction Failed"},tn={wallet_unavailable:"No wallet found. Please install a compatible wallet (e.g., MetaMask, WalletConnect) and try again.",user_rejected:"The connection request was declined in your wallet. You can try again whenever you're ready.",deeplink_timeout:"The wallet didn't respond in time. This can happen if the wallet app isn't installed or takes too long to open.",session_expired:"Your wallet session has expired. Please reconnect to continue.",intent_expired:"The connection request expired. Please try connecting again.",namespace_mismatch:"This wallet doesn't support the required network. Try using a different wallet or network.",chain_unsupported:"This network isn't supported. Please switch to a supported network in your wallet.",method_not_allowed:"This action isn't supported by your current wallet or network.",signature_rejected:"The signature request was declined in your wallet.",tx_failed:"The transaction couldn't be completed. This could be due to insufficient funds, network congestion, or a contract error."},Ke="Something went wrong",je="An unexpected error occurred. Please try again. If the problem persists, check your connection and wallet configuration.";function Me(e){if(!e)return{title:Ke,description:je};let t=e;if(t.name==="WalletError"&&t.code){let n=t.code,s=en[n]??Ke,r=tn[n]??t.message??je;return{title:s,description:r,code:n}}if(e instanceof Error){let n=e.message;return/user rejected/i.test(n)||/rejected/.test(n)?{title:"Request Rejected",description:"The request was declined.",code:"user_rejected"}:/timeout/i.test(n)||/timed? ?out/i.test(n)?{title:"Request Timed Out",description:"The request took too long. Please try again.",code:"deeplink_timeout"}:/network/i.test(n)||/chain/i.test(n)?{title:"Network Error",description:n,code:"chain_unsupported"}:/insufficient funds/i.test(n)?{title:"Insufficient Funds",description:"You don't have enough funds to complete this transaction.",code:"tx_failed"}:{title:Ke,description:n||je}}return typeof e=="string"?{title:Ke,description:e||je}:{title:Ke,description:je}}function pt(e){let t=e;return t.name!=="WalletError"||!t.code?!1:["deeplink_timeout","session_expired","intent_expired","tx_failed"].includes(t.code)}function Zn(){let{error:e,clearError:t}=I(),n=(0,Te.useMemo)(()=>e?Me(e):null,[e]),s=(0,Te.useMemo)(()=>e?pt(e):!1,[e]),r=(0,Te.useCallback)(()=>{t()},[t]),i=(0,Te.useCallback)(p=>Me(p),[]),l=(0,Te.useCallback)(p=>async()=>{try{return await p()}catch(o){let a=Me(o),u=new Error(a.description);throw u.title=a.title,u.code=a.code,u}},[]);return{error:e,friendlyError:n,clearError:r,isRetryable:s,formatError:i,wrapAsync:l}}var ee=require("react"),dt=require("react"),nn=(0,dt.createContext)(null);function Ve(){return(0,dt.useContext)(nn)}function er(e,t,n){let s=Ve(),r=n??s,[i,l]=(0,ee.useState)(null),[p,o]=(0,ee.useState)(!1),[a,u]=(0,ee.useState)(!1),[c,m]=(0,ee.useState)(null),d=(0,ee.useRef)(void 0),h=(0,ee.useCallback)(async()=>{if(!(!r||!e)){o(!0),m(null);try{await r.refreshTx(e,t);let g=r.getTxStatus(e,t);g&&l(g)}catch(g){m(g instanceof Error?g:new Error(String(g)))}finally{o(!1)}}},[r,e,t]),f=(0,ee.useCallback)(()=>{!r||!e||(r.stopWatching(e,t),u(!1))},[r,e,t]);(0,ee.useEffect)(()=>{if(!r||!e||!t){l(null),u(!1);return}d.current&&d.current!==e&&r.stopWatching(d.current),d.current=e;let g=!1;u(!0),o(!0),m(null);let E=r.getTxStatus(e,t);E&&(l(E),o(!1)),r.watchTx(e,t,{}).then(A=>{g||(l(A),o(!1))}).catch(A=>{g||(m(A instanceof Error?A:new Error(String(A))),o(!1))});let S=A=>{g||l({...A})};return r.on("statusChange",S),()=>{g=!0,u(!1),r.off("statusChange",S)}},[r,e,t]);let k=i?.status??"idle";return{entry:i,status:k,isLoading:p,isWatching:a,error:c,refresh:h,stopWatching:f}}var se=require("react");function tr(e,t,n){let s=Ve(),r=n??s,[i,l]=(0,se.useState)([]),[p,o]=(0,se.useState)(!1),[a,u]=(0,se.useState)(null),c=(0,se.useRef)(0),m=(0,se.useCallback)(async()=>{if(r){o(!0),u(null),c.current++;try{let h=await r.getTxHistory(e,t);l(h)}catch(h){u(h instanceof Error?h:new Error(String(h)))}finally{o(!1)}}},[r,e,t]);(0,se.useEffect)(()=>{m().catch(()=>{})},[m]),(0,se.useEffect)(()=>{if(!r)return;let h=()=>{m().catch(()=>{})};return r.on("statusChange",h),()=>{r.off("statusChange",h)}},[r,m]);let d={pending:i.filter(h=>h.status==="pending").length,confirmed:i.filter(h=>h.status==="confirmed").length,failed:i.filter(h=>h.status==="failed").length};return{entries:i,isLoading:p,error:a,refresh:m,summary:d}}var oe=require("react");function mt(e,t){let{session:n}=I(),{evmAccount:s,isConnected:r}=G(),{currentChain:i}=he(),{publicClient:l}=ie(),[p,o]=(0,oe.useState)(void 0),[a,u]=(0,oe.useState)(!1),[c,m]=(0,oe.useState)(null),d=(0,oe.useRef)(void 0),h=(0,oe.useCallback)(async()=>{if(!e){let k={status:"unavailable",balanceChanges:[],approvalChanges:[],riskAssessment:{level:"unknown",score:0,warnings:[]},provider:"eth_call",summary:"No transaction to simulate",changesDetected:!1};return o(k),k}u(!0),m(null);try{let k=t??i?.id??1,g=i?.rpcUrl;if(l)try{let S=s?.includes(":")?s.split(":").pop():s,A={to:e.to,data:e.data??"0x",value:e.value?BigInt(e.value):0n};S&&(A.from=S),await l.call(A);let y={status:"success",balanceChanges:[],approvalChanges:[],riskAssessment:{level:"unknown",score:0,warnings:[]},gasInfo:e.gas?{gasLimit:BigInt(e.gas),estimatedFeeEth:"0"}:void 0,provider:"eth_call",summary:"Transaction simulation succeeded (basic revert check only)",changesDetected:!0};return o(y),y}catch(S){let A,y=S?.message??String(S),v=S?.data??S?.cause?.data;if(v&&typeof v=="string"){let b=v.startsWith("0x")?v.slice(2):v;if(b.startsWith("08c379a0")&&b.length>138){let C=parseInt(b.slice(72,136),16);if(C>0){let x=b.slice(136,136+C*2),w=new Uint8Array(C);for(let T=0;T<C;T++)w[T]=parseInt(x.slice(T*2,T*2+2),16);A=new TextDecoder().decode(w)}}else b.startsWith("4e487b71")&&(A="Panic: Built-in failure")}A||(A=y.includes("revert")?y:"Transaction reverted");let R={status:"reverted",revertReason:A,balanceChanges:[],approvalChanges:[],riskAssessment:{level:"unknown",score:0,warnings:[{category:"simulation_failed",severity:"high",message:A?`Transaction would revert: ${A}`:"Transaction would revert"}]},provider:"eth_call",summary:A?`Transaction reverted: ${A}`:"Transaction reverted",changesDetected:!1};return o(R),R}if(g)try{let A=await(await fetch(g,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:Date.now(),method:"eth_call",params:[{to:e.to,from:s?.includes(":")?s.split(":").pop():s,data:e.data??"0x",value:e.value??"0x0"},"latest"]})})).json();if(A.error){let v={status:"reverted",balanceChanges:[],approvalChanges:[],riskAssessment:{level:"unknown",score:0,warnings:[{category:"simulation_failed",severity:"high",message:`Transaction would revert: ${A.error.message}`}]},provider:"eth_call",summary:"Transaction reverted",changesDetected:!1};return o(v),v}let y={status:"success",balanceChanges:[],approvalChanges:[],riskAssessment:{level:"unknown",score:0,warnings:[]},provider:"eth_call",summary:"Transaction simulation succeeded",changesDetected:!0};return o(y),y}catch(S){let A={status:"unavailable",balanceChanges:[],approvalChanges:[],riskAssessment:{level:"unknown",score:0,warnings:[{category:"simulation_failed",severity:"medium",message:`Network error: ${S?.message??"Unknown"}`}]},provider:"eth_call",summary:"Simulation unavailable due to network error",changesDetected:!1};return o(A),A}let E={status:"unavailable",balanceChanges:[],approvalChanges:[],riskAssessment:{level:"unknown",score:0,warnings:[{category:"simulation_failed",severity:"low",message:"No RPC URL or public client available for simulation"}]},provider:"eth_call",summary:"Simulation unavailable: no RPC URL",changesDetected:!1};return o(E),E}catch(k){let g=k instanceof Error?k:new Error("Simulation failed");throw m(g),g}finally{u(!1)}},[e,t,i,l,s]);(0,oe.useEffect)(()=>{if(e)return d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{h().catch(()=>{})},300),()=>{d.current&&clearTimeout(d.current)}},[e,h]);let f=(0,oe.useCallback)(()=>{o(void 0),m(null),u(!1)},[]);return{result:p,isSimulating:a,error:c,simulate:h,reset:f}}var nr=require("react");var Us="0xa9059cbb";function Ps(e){return(e.startsWith("0x")?e.slice(2):e).padStart(64,"0")}function Ws(e,t=32){return(e.startsWith("0x")?e.slice(2):e).padStart(t*2,"0")}function Os(e,t){let[n="0",s=""]=e.split("."),r=s.padEnd(t,"0").slice(0,t);return BigInt(n+r||"0")}function _s(e,t){return`${Us}${Ps(e)}${Ws(t.toString(16))}`}function rr(e){let{evmAccount:t,isConnected:n}=G(),{currentChain:s}=he(),r=e.token.chainId??s?.id??1,i=(0,nr.useMemo)(()=>{if(!(!n||!t))try{let p=e.token.decimals??18,o=Os(e.amount,p),a=_s(e.to,o);return{to:e.token.address,data:a,value:"0"}}catch{return}},[e.token.address,e.token.decimals,e.to,e.amount,t,n]),l=mt(i,r);return{result:l.result,isSimulating:l.isSimulating,error:l.error,reSimulate:l.simulate,reset:l.reset}}var le=require("react");function sr(e){let t=Ve(),n=e??t,[s,r]=(0,le.useState)(null),[i,l]=(0,le.useState)(null),[p,o]=(0,le.useState)(null),a=(0,le.useRef)(null),u=(0,le.useRef)(null),c=(0,le.useRef)(null);n&&(u.current||(u.current=d=>{l(d),(!a.current||d.createdAt>=a.current.createdAt)&&(r(d),a.current=d)},n.on("confirmed",u.current)),c.current||(c.current=d=>{o(d),(!a.current||d.createdAt>=a.current.createdAt)&&(r(d),a.current=d)},n.on("failed",c.current)));let m=(0,le.useCallback)(()=>{r(null),l(null),o(null),a.current=null},[]);return{lastTx:s,lastConfirmedTx:i,lastFailedTx:p,clear:m}}var j=require("react");function or(e){let{evmAccount:t}=G(),[n,s]=(0,j.useState)(null),[r,i]=(0,j.useState)(!1),[l,p]=(0,j.useState)(null),[o,a]=(0,j.useState)(!1),[u,c]=(0,j.useState)(null),m=(0,j.useRef)(null);(0,j.useEffect)(()=>{if(!e?.rpcUrl){m.current=null;return}let g=!1;return import("@naculus/connect-core").then(({SmartAccountManager:E})=>{g||(m.current=new E({rpcUrl:e.rpcUrl,chainId:e.chainId??"eip155:1",bundlerClient:{url:e.bundlerUrl??""}}))}).catch(E=>{g||c(E instanceof Error?E:new Error("Failed to load account-abstraction module"))}),()=>{g=!0}},[e?.rpcUrl,e?.bundlerUrl,e?.chainId]);let d=(0,j.useCallback)(()=>{let g=t;return!g||!m.current?null:{owner:g.includes(":")?g.split(":").pop():g,accountType:e?.accountType??"simple",entryPoint:"0x0000000071727De22E5E9d8BAf0edAc6f37da032",chainId:e?.chainId??"eip155:1",salt:e?.salt}},[t,e?.accountType,e?.chainId,e?.salt]),h=(0,j.useCallback)(async()=>{let g=d();if(!g||!m.current)return c(new Error("Smart account not configured")),null;a(!0),c(null);try{let E=await m.current.createAccount(g);return s(E.address),i(E.isDeployed),p(E),E}catch(E){let S=E instanceof Error?E:new Error("Failed to create smart account");return c(S),null}finally{a(!1)}},[d]),f=(0,j.useCallback)(async()=>{let g=d();if(!g||!m.current)return c(new Error("Smart account not configured")),null;a(!0),c(null);try{let E=await m.current.deployAccount(g);if(E){let S=await m.current.createAccount(g);s(S.address),i(!0),p(S)}return E}catch(E){let S=E instanceof Error?E:new Error("Failed to deploy smart account");return c(S),null}finally{a(!1)}},[d]),k=(0,j.useCallback)(async()=>{let g=d();if(!g||!m.current)return null;try{return await m.current.getAccountAddress(g)}catch{return null}},[d]);return{address:n,isDeployed:r,accountInfo:l,isLoading:o,error:u,createWallet:h,deployWallet:f,getAddress:k}}var ae=require("react");function ar(e){let[t,n]=(0,ae.useState)(null),[s,r]=(0,ae.useState)(null),[i,l]=(0,ae.useState)(!1),[p,o]=(0,ae.useState)(!1),[a,u]=(0,ae.useState)(null),c=(0,ae.useRef)(null),m=(0,ae.useCallback)(async(h,f)=>{if(!e?.bundlerUrl)return u(new Error("Bundler URL not configured")),null;if(!h.length)return u(new Error("At least one call is required")),null;c.current?.abort(),c.current=new AbortController,l(!0),o(!0),u(null),n(null),r(null);try{let{SmartAccountManager:k,buildCallData:g,signUserOperation:E,sendUserOperation:S,buildUserOperation:A}=await import("@naculus/connect-core"),y=g(h),v=e?.entryPoint??"0x0000000071727De22E5E9d8BAf0edAc6f37da032",R={callGasLimit:100000n,verificationGasLimit:100000n,preVerificationGas:50000n};o(!1);try{R=await import("@naculus/connect-core").then(({estimateUserOperationGas:U})=>U({callData:y,sender:"0x0000000000000000000000000000000000000000"},v,e.bundlerUrl))}catch{}let b=50000000000n,C=1000000000n;if(e.rpcUrl)try{let T=await fetch(e.rpcUrl,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_getBlockByNumber",params:["latest",!1]}),signal:c.current.signal}).then(D=>D.json()).then(D=>D.result?.baseFeePerGas?BigInt(D.result.baseFeePerGas):null),U=await fetch(e.rpcUrl,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_maxPriorityFeePerGas",params:[]}),signal:c.current.signal}).then(D=>D.json()).then(D=>D.result?BigInt(D.result):null);T&&U&&(b=T*2n+U,C=U)}catch{}f?.gasOverrides?.callGasLimit&&(R.callGasLimit=f.gasOverrides.callGasLimit),f?.gasOverrides?.verificationGasLimit&&(R.verificationGasLimit=f.gasOverrides.verificationGasLimit),f?.gasOverrides?.preVerificationGas&&(R.preVerificationGas=f.gasOverrides.preVerificationGas),f?.gasOverrides?.maxFeePerGas&&(b=f.gasOverrides.maxFeePerGas),f?.gasOverrides?.maxPriorityFeePerGas&&(C=f.gasOverrides.maxPriorityFeePerGas);let x=A({sender:"0x0000000000000000000000000000000000000000",nonce:0n,callData:y,accountGasLimits:`0x${R.verificationGasLimit.toString(16).padStart(32,"0")}${R.callGasLimit.toString(16).padStart(32,"0")}`,preVerificationGas:R.preVerificationGas,maxFeePerGas:b,maxPriorityFeePerGas:C}),w=await S(x,e.bundlerUrl,v);return n(w.userOpHash),Ns(w.userOpHash,e.bundlerUrl,v).then(T=>{T&&r(T)}).catch(()=>{}),w}catch(k){let g=k instanceof Error?k:new Error("Failed to send UserOperation");return u(g),null}finally{l(!1),o(!1)}},[e]),d=(0,ae.useCallback)(()=>{n(null),r(null),l(!1),o(!1),u(null)},[]);return{sendUserOp:m,userOpHash:t,receipt:s,isPending:i,isEstimating:p,error:a,reset:d}}async function Ns(e,t,n,s=20,r=2e3){for(let i=0;i<s;i++){try{let p=await(await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_getUserOperationReceipt",params:[e]})})).json();if(p.result)return{userOpHash:p.result.userOpHash,entryPoint:p.result.entryPoint,sender:p.result.sender,nonce:BigInt(p.result.nonce),paymaster:p.result.paymaster,actualGasUsed:BigInt(p.result.actualGasUsed),actualGasCost:BigInt(p.result.actualGasCost),success:p.result.success,transactionHash:p.result.transactionHash,logs:p.result.logs}}catch{}i<s-1&&await new Promise(l=>setTimeout(l,r))}return null}var L=require("react");function ir(e){let t=e?.bundlerUrl,n=e?.pollInterval??2e3,s=e?.maxRetries??30,[r,i]=(0,L.useState)("idle"),[l,p]=(0,L.useState)(null),[o,a]=(0,L.useState)(e?.userOpHash??null),[u,c]=(0,L.useState)(null),[m,d]=(0,L.useState)(!1),[h,f]=(0,L.useState)(0),k=(0,L.useRef)(0),[g,E]=(0,L.useState)(0),S=(0,L.useRef)(null),A=(0,L.useRef)(null),y=(0,L.useCallback)(()=>{S.current&&(clearInterval(S.current),S.current=null),A.current&&(clearTimeout(A.current),A.current=null)},[]),v=(0,L.useCallback)(async x=>{if(t)try{let w=await fetch(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"eth_getUserOperationReceipt",params:[x]})});if(!w.ok)return;let T=await w.json();if(T.result){let U={userOpHash:T.result.userOpHash,entryPoint:T.result.entryPoint,sender:T.result.sender,nonce:BigInt(T.result.nonce),paymaster:T.result.paymaster,actualGasUsed:BigInt(T.result.actualGasUsed),actualGasCost:BigInt(T.result.actualGasCost),success:T.result.success,transactionHash:T.result.transactionHash,logs:T.result.logs};p(U),i(T.result.success?"confirmed":"failed"),d(!1),y();return}f(U=>U+1),i("pending"),h<s?A.current=setTimeout(()=>v(x),n):(i("not_found"),d(!1),y(),c(new Error("UserOperation not included after maximum retries")))}catch{f(w=>w+1),h<s&&(A.current=setTimeout(()=>v(x),n))}},[t,n,s,h,y]),R=(0,L.useCallback)(x=>{y(),a(x),i("pending"),p(null),c(null),f(0),d(!0),k.current=Date.now(),S.current=setInterval(()=>{E(Date.now()-k.current)},1e3),v(x)},[y,v]),b=(0,L.useCallback)(()=>{y(),d(!1)},[y]),C=(0,L.useCallback)(()=>{y(),a(null),i("idle"),p(null),c(null),d(!1),f(0),E(0)},[y]);return(0,L.useEffect)(()=>{e?.userOpHash&&e?.autoStart!==!1&&R(e.userOpHash)},[]),(0,L.useEffect)(()=>()=>{y()},[y]),{status:r,receipt:l,userOpHash:o,error:u,isPolling:m,elapsedMs:g,attempts:h,start:R,stop:b,reset:C}}var te=require("react"),cr=require("@naculus/connect-core");function qe(e,t){let n=(0,te.useRef)(null),[s,r]=(0,te.useState)([]),[i,l]=(0,te.useState)(t?.autoLoad!==!1),[p,o]=(0,te.useState)(!1),[a,u]=(0,te.useState)(null);if(!n.current){let d={};t?.sources&&(d.sources=t.sources),n.current=new cr.TokenListManager(d)}let c=(0,te.useCallback)(async()=>{let d=n.current;if(d){l(!0),u(null);try{await d.load();let h=e?lr(e):void 0,f=d.getTokens(h!==void 0?{chainId:h}:void 0);r(f),o(!0)}catch(h){u(h instanceof Error?h:new Error(String(h)))}finally{l(!1)}}},[e]),m=(0,te.useCallback)(async()=>{let d=n.current;if(d){l(!0),u(null);try{await d.refresh();let h=e?lr(e):void 0,f=d.getTokens(h!==void 0?{chainId:h}:void 0);r(f),o(!0)}catch(h){u(h instanceof Error?h:new Error(String(h)))}finally{l(!1)}}},[e]);return(0,te.useEffect)(()=>{t?.autoLoad!==!1&&c()},[c,t?.autoLoad]),{tokens:s,isLoading:i,isLoaded:p,error:a,refetch:m}}function lr(e){let t=e.split(":"),n=parseInt(t[t.length-1],10);return isNaN(n)?void 0:n}var Re=require("react"),pr=require("@naculus/connect-core");var ce=require("@naculus/connect-core");function ur(){return[{name:"built-in",tokens:[...ce.ETHEREUM_MAINNET_TOKENS,...ce.POLYGON_TOKENS,...ce.OPTIMISM_TOKENS,...ce.ARBITRUM_TOKENS,...ce.BASE_TOKENS],enabled:!0},{name:"uniswap-default",url:"https://tokens.uniswap.org",enabled:!0,refreshInterval:1440*60*1e3}]}var Ds=300,ft=null;function Ls(){return ft||(ft=new pr.TokenListManager({sources:ur()}),ft.load().catch(()=>{})),ft}function ze(e,t){let[n,s]=(0,Re.useState)({exact:[],fuzzy:[],hasMore:!1}),[r,i]=(0,Re.useState)(!1),l=(0,Re.useRef)(null),p=e.trim();return(0,Re.useEffect)(()=>{if(!p){s({exact:[],fuzzy:[],hasMore:!1}),i(!1);return}return l.current&&clearTimeout(l.current),i(!0),l.current=setTimeout(()=>{let o=Ls(),a=t?Ms(t):void 0,u=o.search(p,{chainId:a,limit:20});s(u),i(!1)},Ds),()=>{l.current&&clearTimeout(l.current)}},[p,t]),{results:n,isSearching:r}}function Ms(e){let t=e.split(":"),n=parseInt(t[t.length-1],10);return isNaN(n)?void 0:n}var Be=Se(require("react"),1);var _=require("react/jsx-runtime");function rn({chainId:e,onSelect:t,onClose:n,options:s}){let[r,i]=Be.default.useState(""),{tokens:l,isLoading:p,error:o}=qe(e),{results:a,isSearching:u}=ze(r,r?e:void 0),c=s?.showRecommendations??!0,m=Be.default.useMemo(()=>{if(r.trim()){let k=[...a.exact,...a.fuzzy].map(g=>g.token);return s?.filter?k.filter(s.filter):k}let f=l;return s?.filter?f.filter(s.filter):f},[r,a,l,s?.filter]),d=Be.default.useMemo(()=>!c||r.trim()?[]:l.slice(0,6),[l,c,r]),h=(0,Be.useCallback)(f=>{t(f),n()},[t,n]);return(0,_.jsxs)("div",{style:{background:"hsl(var(--background))",borderRadius:"12px",padding:"16px",color:"hsl(var(--foreground))",minWidth:"320px",maxWidth:"400px",fontFamily:"system-ui, sans-serif"},children:[(0,_.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px"},children:[(0,_.jsx)("h3",{style:{margin:0,fontSize:"16px",fontWeight:600},children:"Select Token"}),(0,_.jsx)("button",{onClick:n,style:{background:"none",border:"none",color:"hsl(var(--muted-foreground))",cursor:"pointer",fontSize:"18px",padding:"4px 8px"},children:"\u2715"})]}),(0,_.jsx)("input",{type:"text",placeholder:"Search token name or paste address",value:r,onChange:f=>i(f.target.value),style:{width:"100%",padding:"10px 12px",borderRadius:"8px",border:"1px solid #333",background:"hsl(var(--card))",color:"hsl(var(--foreground))",fontSize:"14px",outline:"none",boxSizing:"border-box",marginBottom:"12px"},autoFocus:!0}),p&&!u&&(0,_.jsx)("div",{style:{textAlign:"center",padding:"20px",color:"hsl(var(--muted-foreground))"},children:"Loading tokens..."}),o&&(0,_.jsxs)("div",{style:{textAlign:"center",padding:"12px",color:"hsl(var(--destructive))",fontSize:"13px"},children:["Error: ",o.message]}),c&&d.length>0&&!r.trim()&&(0,_.jsxs)("div",{style:{marginBottom:"12px"},children:[(0,_.jsx)("div",{style:{fontSize:"11px",color:"hsl(var(--muted-foreground))",textTransform:"uppercase",letterSpacing:"0.5px",marginBottom:"8px"},children:"Popular"}),(0,_.jsx)("div",{style:{display:"flex",gap:"6px",flexWrap:"wrap"},children:d.map(f=>(0,_.jsxs)("button",{onClick:()=>h(f),style:{background:"hsl(var(--card))",border:"1px solid #333",borderRadius:"20px",padding:"6px 14px",color:"hsl(var(--foreground))",cursor:"pointer",fontSize:"13px",display:"flex",alignItems:"center",gap:"4px"},children:[f.logoURI?(0,_.jsx)("img",{src:f.logoURI,alt:"",style:{width:"16px",height:"16px",borderRadius:"50%"},onError:k=>{k.target.style.display="none"}}):null,f.symbol]},`${f.chainId}:${f.address}`))})]}),r.trim()&&!p&&(0,_.jsx)("div",{style:{fontSize:"11px",color:"hsl(var(--muted-foreground))",marginBottom:"8px"},children:m.length>0?(0,_.jsxs)(_.Fragment,{children:[a.exact.length," exact, ",a.fuzzy.length," fuzzy",a.hasMore?" (more available)":""]}):"No results found"}),(0,_.jsx)("div",{style:{maxHeight:"320px",overflowY:"auto",display:"flex",flexDirection:"column",gap:"2px"},children:m.map(f=>(0,_.jsxs)("button",{onClick:()=>h(f),style:{display:"flex",alignItems:"center",gap:"10px",padding:"10px 8px",background:"transparent",border:"none",borderRadius:"8px",color:"hsl(var(--foreground))",cursor:"pointer",textAlign:"left",width:"100%",fontSize:"14px"},onMouseEnter:k=>{k.target.style.background="hsl(var(--card))"},onMouseLeave:k=>{k.target.style.background="transparent"},children:[(0,_.jsx)("div",{style:{width:"32px",height:"32px",borderRadius:"50%",background:"hsl(var(--border))",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"12px",fontWeight:600,flexShrink:0,overflow:"hidden"},children:f.logoURI?(0,_.jsx)("img",{src:f.logoURI,alt:f.symbol,style:{width:"100%",height:"100%"},onError:k=>{let g=k.target;g.style.display="none",g.parentElement.textContent=f.symbol.slice(0,2)}}):f.symbol.slice(0,2)}),(0,_.jsxs)("div",{style:{flex:1,minWidth:0},children:[(0,_.jsx)("div",{style:{fontWeight:600,fontSize:"14px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:f.symbol}),(0,_.jsx)("div",{style:{fontSize:"12px",color:"hsl(var(--muted-foreground))",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:f.name})]}),(0,_.jsxs)("div",{style:{fontSize:"11px",color:"#666",textAlign:"right",flexShrink:0},children:[(0,_.jsxs)("div",{children:[f.decimals," decimals"]}),(0,_.jsxs)("div",{children:["Chain ",f.chainId]})]})]},`${f.chainId}:${f.address}`))})]})}var M=require("react"),fr=require("@naculus/connect-core"),gr=require("@naculus/connect-core"),Bs={telegram:!1,webpush:!1,inapp:!0,frequency:"final-only",mutedChains:[],mutedTypes:[]},dr="naculus_notif_react_settings";function Cr(e){let t=(0,M.useRef)(null);t.current||(t.current=e?.channel??new fr.InAppChannel);let n=t.current,[s,r]=(0,M.useState)(()=>n.getHistory()),[i,l]=(0,M.useState)(()=>Bs);(0,M.useEffect)(()=>{(e?.storage??mr()).getItem(dr).then(E=>{E&&l(E)})},[]),(0,M.useEffect)(()=>(n.onNotification=g=>{r(E=>[...E,g])},n.restore().then(()=>{r(n.getHistory())}),()=>{n.onNotification=void 0}),[]);let p=(0,M.useMemo)(()=>s.filter(g=>!g.read).length,[s]),o=(0,M.useCallback)(()=>{n.clear(),r([])},[n]),a=(0,M.useCallback)(g=>{let E=n.getHistory().filter(S=>S.id!==g);n.clear(),Promise.all(E.map(S=>n.send({id:S.id,userId:"",txHash:S.txHash,chainId:"",chainName:S.chainName,status:S.status,title:S.title,body:S.body,valueFormatted:S.valueFormatted,explorerUrl:S.explorerUrl,timestamp:S.timestamp}))).then(()=>{r(n.getHistory())})},[n]),u=(0,M.useCallback)(g=>{n.markAsRead(g),r(E=>E.map(S=>S.id===g?{...S,read:!0}:S))},[n]),c=(0,M.useCallback)(()=>{n.markAllAsRead(),r(g=>g.map(E=>({...E,read:!0})))},[n]),m=(0,M.useCallback)(g=>{let E={...g,id:`notif_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,timestamp:Date.now()};n.send({id:E.id,userId:"",txHash:E.txHash,chainId:"",chainName:E.chainName,status:E.status,title:E.title,body:E.body,valueFormatted:E.valueFormatted,explorerUrl:E.explorerUrl,timestamp:E.timestamp})},[n]),d=(0,M.useCallback)(g=>{l(E=>{let S={...E,...g};return(e?.storage??mr()).setItem(dr,S).catch(()=>{}),S})},[e?.storage]),h=(0,M.useCallback)(g=>{let E={};g.includes("telegram")&&(E.telegram=!0),g.includes("webpush")&&(E.webpush=!0),g.includes("inapp")&&(E.inapp=!0),d(E)},[d]),f=(0,M.useCallback)(g=>{d({mutedChains:[...new Set([...i.mutedChains,g])]})},[i.mutedChains,d]),k=(0,M.useCallback)(g=>{d({mutedChains:i.mutedChains.filter(E=>E!==g)})},[i.mutedChains,d]);return{notifications:s,unreadCount:p,addNotification:m,clear:o,clearOne:a,markAsRead:u,markAllAsRead:c,settings:i,updateSettings:d,setChannels:h,muteChain:f,unmuteChain:k}}function mr(){let e=(0,gr.createStorageAdapter)("local","naculus_notif_");return{getItem:async t=>{try{return await e.get(t)}catch(n){return console.warn("useNotification: failed to read from storage:",n),null}},setItem:async(t,n)=>{try{await e.set(t,n)}catch(s){console.warn("useNotification: failed to write to storage:",s)}},removeItem:async t=>{try{await e.remove(t)}catch(n){console.warn("useNotification: failed to remove from storage:",n)}}}}var ge=require("react"),Sr=require("@naculus/wallet-engine");function hr(e){let t=e?.rpcUrl,n=e?.chainId,s=(0,ge.useRef)(null);function r(){return s.current||(s.current=new Sr.SimulationManager({enabled:!0,rpcUrl:t,autoSimulate:!1})),s.current}let[i,l]=(0,ge.useState)(null),[p,o]=(0,ge.useState)(!1),[a,u]=(0,ge.useState)(null),c=(0,ge.useCallback)(async(d,h,f,k,g)=>{o(!0),u(null);try{let E=r(),S=g?.chainId??n??1,A=g?.rpcUrl??t,y=await E.simulateERC20Transfer(d,h,f,k,S,g?.decimals);return l(y),y}catch(E){let S=E instanceof Error?E:new Error(String(E));throw u(S),S}finally{o(!1)}},[t,n]),m=(0,ge.useCallback)(()=>{l(null),u(null),o(!1)},[]);return{result:i,loading:p,error:a,simulate:c,reset:m}}var z=require("react");function sn(e,t){let{fromChain:n,toChain:s,fromToken:r,toToken:i,amount:l,options:p}=e,[o,a]=(0,z.useState)([]),[u,c]=(0,z.useState)(!1),[m,d]=(0,z.useState)(null),h=(0,z.useRef)(null),f=(0,z.useRef)(!0),k=(0,z.useCallback)(async()=>{if(!n||!s||!r||!l||BigInt(l)<=0n){a([]);return}if(t){c(!0),d(null);try{let S=await t(n,s,r,l,p);f.current&&a(S)}catch(S){f.current&&(d(S instanceof Error?S:new Error(String(S))),a([]))}finally{f.current&&c(!1)}}},[n,s,r,l,p,t]);(0,z.useEffect)(()=>{if(h.current&&clearTimeout(h.current),!n||!s||!r||!l){a([]);return}return h.current=setTimeout(()=>{k()},300),()=>{h.current&&clearTimeout(h.current)}},[k,n,s,r,l]),(0,z.useEffect)(()=>(f.current=!0,()=>{f.current=!1}),[]);let g=(0,z.useCallback)(async()=>{await k()},[k]),E=(0,z.useCallback)(()=>{a([]),d(null),c(!1)},[]);return{quotes:o,loading:u,error:m,refresh:g,clear:E}}var Ce=require("react");function on(e){let[t,n]=(0,Ce.useState)(!1),[s,r]=(0,Ce.useState)(null),[i,l]=(0,Ce.useState)(null),p=(0,Ce.useRef)(!0),o=(0,Ce.useCallback)(async(u,c,m)=>{if(!e){l({code:"no_executor",message:"No executeRoute function provided"});return}n(!0),l(null),r(null);try{let d=await e(u,c,m);p.current&&r(d)}catch(d){if(p.current){let h=d;l({code:h.code??"execution_failed",message:h.message,details:h.details})}}finally{p.current&&n(!1)}},[e]),a=(0,Ce.useCallback)(()=>{r(null),l(null),n(!1)},[]);return{execute:o,executing:t,result:s,error:i,reset:a}}var ne=require("react");function an(e,t){let{operation:n,chains:s,options:r}=e,[i,l]=(0,ne.useState)([]),[p,o]=(0,ne.useState)(!1),[a,u]=(0,ne.useState)(null),c=(0,ne.useRef)(!0),m=(0,ne.useCallback)(async()=>{if(!s||s.length===0){l([]);return}if(t){o(!0),u(null);try{let h=await t(n,s,r);c.current&&l(h)}catch(h){c.current&&(u(h instanceof Error?h:new Error(String(h))),l([]))}finally{c.current&&o(!1)}}},[n,s,r,t]);(0,ne.useEffect)(()=>{m()},[m]),(0,ne.useEffect)(()=>(c.current=!0,()=>{c.current=!1}),[]);let d=(0,ne.useCallback)(async()=>{await m()},[m]);return{comparisons:i,loading:p,error:a,refresh:d}}var W=require("@stencil/react-output-target/runtime"),O=Se(require("react"),1),gt=require("@naculus/connect-appkit-wc/dist/components/appkit-accordion.js"),Ct=require("@naculus/connect-appkit-wc/dist/components/appkit-account-button.js"),St=require("@naculus/connect-appkit-wc/dist/components/appkit-alert-dialog.js"),ht=require("@naculus/connect-appkit-wc/dist/components/appkit-avatar.js"),Et=require("@naculus/connect-appkit-wc/dist/components/appkit-badge.js"),kt=require("@naculus/connect-appkit-wc/dist/components/appkit-button.js"),yt=require("@naculus/connect-appkit-wc/dist/components/appkit-card-content.js"),At=require("@naculus/connect-appkit-wc/dist/components/appkit-card-description.js"),xt=require("@naculus/connect-appkit-wc/dist/components/appkit-card-footer.js"),vt=require("@naculus/connect-appkit-wc/dist/components/appkit-card-header.js"),wt=require("@naculus/connect-appkit-wc/dist/components/appkit-card-title.js"),bt=require("@naculus/connect-appkit-wc/dist/components/appkit-card.js"),Tt=require("@naculus/connect-appkit-wc/dist/components/appkit-checkbox.js"),Rt=require("@naculus/connect-appkit-wc/dist/components/appkit-collapsible.js"),It=require("@naculus/connect-appkit-wc/dist/components/appkit-connect-button.js"),Ut=require("@naculus/connect-appkit-wc/dist/components/appkit-dialog.js"),Pt=require("@naculus/connect-appkit-wc/dist/components/appkit-dropdown-menu.js"),Wt=require("@naculus/connect-appkit-wc/dist/components/appkit-input.js"),Ot=require("@naculus/connect-appkit-wc/dist/components/appkit-popover.js"),_t=require("@naculus/connect-appkit-wc/dist/components/appkit-progress.js"),Nt=require("@naculus/connect-appkit-wc/dist/components/appkit-scroll-area.js"),Dt=require("@naculus/connect-appkit-wc/dist/components/appkit-select.js"),Lt=require("@naculus/connect-appkit-wc/dist/components/appkit-separator.js"),Mt=require("@naculus/connect-appkit-wc/dist/components/appkit-skeleton.js"),Bt=require("@naculus/connect-appkit-wc/dist/components/appkit-switch.js"),Ht=require("@naculus/connect-appkit-wc/dist/components/appkit-tabs.js"),Ft=require("@naculus/connect-appkit-wc/dist/components/appkit-toggle-group.js"),Gt=require("@naculus/connect-appkit-wc/dist/components/appkit-tooltip.js"),Er=(0,W.createComponent)({tagName:"appkit-accordion",elementClass:gt.AppkitAccordion,react:O.default,events:{onAppkitToggle:"appkitToggle"},defineCustomElement:gt.defineCustomElement}),kr=(0,W.createComponent)({tagName:"appkit-account-button",elementClass:Ct.AppkitAccountButton,react:O.default,events:{},defineCustomElement:Ct.defineCustomElement}),yr=(0,W.createComponent)({tagName:"appkit-alert-dialog",elementClass:St.AppkitAlertDialog,react:O.default,events:{onAppkitClose:"appkitClose",onAppkitOpenChange:"appkitOpenChange"},defineCustomElement:St.defineCustomElement}),Ar=(0,W.createComponent)({tagName:"appkit-avatar",elementClass:ht.AppkitAvatar,react:O.default,events:{},defineCustomElement:ht.defineCustomElement}),xr=(0,W.createComponent)({tagName:"appkit-badge",elementClass:Et.AppkitBadge,react:O.default,events:{},defineCustomElement:Et.defineCustomElement}),vr=(0,W.createComponent)({tagName:"appkit-button",elementClass:kt.AppkitButton,react:O.default,events:{},defineCustomElement:kt.defineCustomElement}),wr=(0,W.createComponent)({tagName:"appkit-card",elementClass:bt.AppkitCard,react:O.default,events:{},defineCustomElement:bt.defineCustomElement}),br=(0,W.createComponent)({tagName:"appkit-card-content",elementClass:yt.AppkitCardContent,react:O.default,events:{},defineCustomElement:yt.defineCustomElement}),Tr=(0,W.createComponent)({tagName:"appkit-card-description",elementClass:At.AppkitCardDescription,react:O.default,events:{},defineCustomElement:At.defineCustomElement}),Rr=(0,W.createComponent)({tagName:"appkit-card-footer",elementClass:xt.AppkitCardFooter,react:O.default,events:{},defineCustomElement:xt.defineCustomElement}),Ir=(0,W.createComponent)({tagName:"appkit-card-header",elementClass:vt.AppkitCardHeader,react:O.default,events:{},defineCustomElement:vt.defineCustomElement}),Ur=(0,W.createComponent)({tagName:"appkit-card-title",elementClass:wt.AppkitCardTitle,react:O.default,events:{},defineCustomElement:wt.defineCustomElement}),Pr=(0,W.createComponent)({tagName:"appkit-checkbox",elementClass:Tt.AppkitCheckbox,react:O.default,events:{onAppkitChange:"appkitChange"},defineCustomElement:Tt.defineCustomElement}),Wr=(0,W.createComponent)({tagName:"appkit-collapsible",elementClass:Rt.AppkitCollapsible,react:O.default,events:{onAppkitToggle:"appkitToggle"},defineCustomElement:Rt.defineCustomElement}),Or=(0,W.createComponent)({tagName:"appkit-connect-button",elementClass:It.AppkitConnectButton,react:O.default,events:{onAppkitConnect:"appkitConnect",onAppkitDisconnect:"appkitDisconnect",onAppkitStartPairing:"appkitStartPairing",onAppkitRetry:"appkitRetry",onAppkitMobileDeepLink:"appkitMobileDeepLink",onAppkitCopyAddress:"appkitCopyAddress"},defineCustomElement:It.defineCustomElement}),_r=(0,W.createComponent)({tagName:"appkit-dialog",elementClass:Ut.AppkitDialog,react:O.default,events:{onAppkitClose:"appkitClose",onAppkitOpenChange:"appkitOpenChange"},defineCustomElement:Ut.defineCustomElement}),Nr=(0,W.createComponent)({tagName:"appkit-dropdown-menu",elementClass:Pt.AppkitDropdownMenu,react:O.default,events:{onAppkitSelect:"appkitSelect"},defineCustomElement:Pt.defineCustomElement}),Dr=(0,W.createComponent)({tagName:"appkit-input",elementClass:Wt.AppkitInput,react:O.default,events:{onAppkitChange:"appkitChange"},defineCustomElement:Wt.defineCustomElement}),Lr=(0,W.createComponent)({tagName:"appkit-popover",elementClass:Ot.AppkitPopover,react:O.default,events:{onAppkitOpenChange:"appkitOpenChange"},defineCustomElement:Ot.defineCustomElement}),Mr=(0,W.createComponent)({tagName:"appkit-progress",elementClass:_t.AppkitProgress,react:O.default,events:{},defineCustomElement:_t.defineCustomElement}),Br=(0,W.createComponent)({tagName:"appkit-scroll-area",elementClass:Nt.AppkitScrollArea,react:O.default,events:{},defineCustomElement:Nt.defineCustomElement}),Hr=(0,W.createComponent)({tagName:"appkit-select",elementClass:Dt.AppkitSelect,react:O.default,events:{onAppkitChange:"appkitChange"},defineCustomElement:Dt.defineCustomElement}),Fr=(0,W.createComponent)({tagName:"appkit-separator",elementClass:Lt.AppkitSeparator,react:O.default,events:{},defineCustomElement:Lt.defineCustomElement}),Gr=(0,W.createComponent)({tagName:"appkit-skeleton",elementClass:Mt.AppkitSkeleton,react:O.default,events:{},defineCustomElement:Mt.defineCustomElement}),$r=(0,W.createComponent)({tagName:"appkit-switch",elementClass:Bt.AppkitSwitch,react:O.default,events:{onAppkitChange:"appkitChange"},defineCustomElement:Bt.defineCustomElement}),Kr=(0,W.createComponent)({tagName:"appkit-tabs",elementClass:Ht.AppkitTabs,react:O.default,events:{onAppkitTabChange:"appkitTabChange"},defineCustomElement:Ht.defineCustomElement}),jr=(0,W.createComponent)({tagName:"appkit-toggle-group",elementClass:Ft.AppkitToggleGroup,react:O.default,events:{onAppkitChange:"appkitChange"},defineCustomElement:Ft.defineCustomElement}),Vr=(0,W.createComponent)({tagName:"appkit-tooltip",elementClass:Gt.AppkitTooltip,react:O.default,events:{},defineCustomElement:Gt.defineCustomElement});0&&(module.exports={AppkitAccordion,AppkitAccountButton,AppkitAlertDialog,AppkitAvatar,AppkitBadge,AppkitButton,AppkitCard,AppkitCardContent,AppkitCardDescription,AppkitCardFooter,AppkitCardHeader,AppkitCardTitle,AppkitCheckbox,AppkitCollapsible,AppkitConnectButton,AppkitDialog,AppkitDropdownMenu,AppkitInput,AppkitPopover,AppkitProgress,AppkitScrollArea,AppkitSelect,AppkitSeparator,AppkitSkeleton,AppkitSwitch,AppkitTabs,AppkitToggleGroup,AppkitTooltip,DEFAULT_EVM_CHAINS,TokenSelector,TxMonitorContext,WALLET_ERROR_DESCRIPTIONS,WALLET_ERROR_TITLES,Web3ConnectProvider,Web3Context,clearClient,createClient,getChainById,getClient,getDefaultChains,getLocale,getUserFriendlyError,isRetryableError,resetSessionKeyManager,setLocale,t,useAccount,useBalance,useChain,useCompareCosts,useConnect,useCreateSessionKey,useDisconnect,useERC20Allowance,useERC20Approve,useERC20Transfer,useERC20TransferSimulation,useEmbeddedWallet,useExecuteRoute,useLastTx,useLookupAddress,useNotification,useResolveName,useRevokeSession,useRouteQuote,useSIWxLogin,useSIWxSession,useSendCalls,useSendTransaction,useSendUserOperation,useSendWithSession,useSession,useSessionKeys,useSignInWithEthereum,useSignInWithX,useSignMessage,useSimulateTransfer,useSiwxAuthSession,useSmartAccount,useSwitchChain,useTokenBalance,useTokenList,useTokenSearch,useTransactionSimulation,useTxHistory,useTxMonitor,useUserOpStatus,useValidateDestination,useViemClient,useWallet,useWeb3,useWeb3ErrorHandler,validateDestination});
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|