@multiplatform.one/web3 6.0.4 → 6.3.0
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/README.md +55 -0
- package/dist/cjs/connectkit/components/Common/ChainSelectDropdown/index.cjs +2 -2
- package/dist/cjs/connectkit/components/Common/ChainSelectDropdown/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/ConnectorList/index.cjs +6 -2
- package/dist/cjs/connectkit/components/Common/ConnectorList/index.native.js +6 -2
- package/dist/cjs/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.cjs +50 -8
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +62 -8
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/About/graphics.cjs +5 -5
- package/dist/cjs/connectkit/components/Pages/About/graphics.native.js +5 -5
- package/dist/cjs/connectkit/components/Pages/About/graphics.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/embeddedDesktop.cjs +43 -0
- package/dist/cjs/connectkit/connectors/embeddedDesktop.native.js +47 -0
- package/dist/cjs/connectkit/connectors/embeddedDesktop.native.js.map +1 -0
- package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.cjs +398 -0
- package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.native.js +453 -0
- package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.native.js.map +1 -0
- package/dist/cjs/connectkit/connectors/syntheticChains.cjs +2 -1
- package/dist/cjs/connectkit/connectors/syntheticChains.native.js +2 -1
- package/dist/cjs/connectkit/connectors/syntheticChains.native.js.map +1 -1
- package/dist/cjs/connectkit/defaultConnectors.cjs +24 -2
- package/dist/cjs/connectkit/defaultConnectors.native.js +24 -2
- package/dist/cjs/connectkit/defaultConnectors.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/connectIntent.cjs +52 -0
- package/dist/cjs/connectkit/siwe/connectIntent.native.js +55 -0
- package/dist/cjs/connectkit/siwe/connectIntent.native.js.map +1 -0
- package/dist/cjs/connectkit/wallets/useWallets.cjs +3 -1
- package/dist/cjs/connectkit/wallets/useWallets.native.js +3 -1
- package/dist/cjs/connectkit/wallets/useWallets.native.js.map +1 -1
- package/dist/cjs/connectkit/wallets/walletConfigs.cjs +4 -3
- package/dist/cjs/connectkit/wallets/walletConfigs.native.js +14 -13
- package/dist/cjs/connectkit/wallets/walletConfigs.native.js.map +1 -1
- package/dist/cjs/connectkit/web3Bridge.cjs +5 -0
- package/dist/cjs/connectkit/web3Bridge.native.js +7 -0
- package/dist/cjs/connectkit/web3Bridge.native.js.map +1 -1
- package/dist/cjs/providers/WalletProvider.cjs +7 -11
- package/dist/cjs/providers/WalletProvider.native.js +8 -8
- package/dist/cjs/providers/WalletProvider.native.js.map +1 -1
- package/dist/cjs/providers/walletConfig.cjs +23 -0
- package/dist/cjs/providers/walletConfig.native.js +27 -0
- package/dist/cjs/providers/walletConfig.native.js.map +1 -1
- package/dist/esm/connectkit/components/Common/ChainSelectDropdown/index.mjs +2 -2
- package/dist/esm/connectkit/components/Common/ChainSelectDropdown/index.mjs.map +1 -1
- package/dist/esm/connectkit/components/Common/ChainSelectDropdown/index.native.js.map +1 -1
- package/dist/esm/connectkit/components/Common/ConnectorList/index.mjs +7 -3
- package/dist/esm/connectkit/components/Common/ConnectorList/index.mjs.map +1 -1
- package/dist/esm/connectkit/components/Common/ConnectorList/index.native.js +7 -3
- package/dist/esm/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs +51 -9
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs.map +1 -1
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +63 -9
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
- package/dist/esm/connectkit/components/Pages/About/graphics.mjs +5 -5
- package/dist/esm/connectkit/components/Pages/About/graphics.mjs.map +1 -1
- package/dist/esm/connectkit/components/Pages/About/graphics.native.js +5 -5
- package/dist/esm/connectkit/components/Pages/About/graphics.native.js.map +1 -1
- package/dist/esm/connectkit/connectors/embeddedDesktop.mjs +17 -0
- package/dist/esm/connectkit/connectors/embeddedDesktop.mjs.map +1 -0
- package/dist/esm/connectkit/connectors/embeddedDesktop.native.js +18 -0
- package/dist/esm/connectkit/connectors/embeddedDesktop.native.js.map +1 -0
- package/dist/esm/connectkit/connectors/metaMaskSdkConnector.mjs +362 -0
- package/dist/esm/connectkit/connectors/metaMaskSdkConnector.mjs.map +1 -0
- package/dist/esm/connectkit/connectors/metaMaskSdkConnector.native.js +414 -0
- package/dist/esm/connectkit/connectors/metaMaskSdkConnector.native.js.map +1 -0
- package/dist/esm/connectkit/connectors/syntheticChains.mjs +2 -1
- package/dist/esm/connectkit/connectors/syntheticChains.mjs.map +1 -1
- package/dist/esm/connectkit/connectors/syntheticChains.native.js +2 -1
- package/dist/esm/connectkit/connectors/syntheticChains.native.js.map +1 -1
- package/dist/esm/connectkit/defaultConnectors.mjs +25 -3
- package/dist/esm/connectkit/defaultConnectors.mjs.map +1 -1
- package/dist/esm/connectkit/defaultConnectors.native.js +25 -3
- package/dist/esm/connectkit/defaultConnectors.native.js.map +1 -1
- package/dist/esm/connectkit/siwe/connectIntent.mjs +25 -0
- package/dist/esm/connectkit/siwe/connectIntent.mjs.map +1 -0
- package/dist/esm/connectkit/siwe/connectIntent.native.js +25 -0
- package/dist/esm/connectkit/siwe/connectIntent.native.js.map +1 -0
- package/dist/esm/connectkit/wallets/useWallets.mjs +4 -2
- package/dist/esm/connectkit/wallets/useWallets.mjs.map +1 -1
- package/dist/esm/connectkit/wallets/useWallets.native.js +4 -2
- package/dist/esm/connectkit/wallets/useWallets.native.js.map +1 -1
- package/dist/esm/connectkit/wallets/walletConfigs.mjs +4 -3
- package/dist/esm/connectkit/wallets/walletConfigs.mjs.map +1 -1
- package/dist/esm/connectkit/wallets/walletConfigs.native.js +14 -13
- package/dist/esm/connectkit/wallets/walletConfigs.native.js.map +1 -1
- package/dist/esm/connectkit/web3Bridge.mjs +6 -1
- package/dist/esm/connectkit/web3Bridge.mjs.map +1 -1
- package/dist/esm/connectkit/web3Bridge.native.js +8 -1
- package/dist/esm/connectkit/web3Bridge.native.js.map +1 -1
- package/dist/esm/providers/WalletProvider.mjs +10 -14
- package/dist/esm/providers/WalletProvider.mjs.map +1 -1
- package/dist/esm/providers/WalletProvider.native.js +11 -11
- package/dist/esm/providers/WalletProvider.native.js.map +1 -1
- package/dist/esm/providers/walletConfig.mjs +24 -2
- package/dist/esm/providers/walletConfig.mjs.map +1 -1
- package/dist/esm/providers/walletConfig.native.js +28 -2
- package/dist/esm/providers/walletConfig.native.js.map +1 -1
- package/dist/jsx/connectkit/components/Common/ChainSelectDropdown/index.mjs +2 -2
- package/dist/jsx/connectkit/components/Common/ChainSelectDropdown/index.mjs.map +1 -1
- package/dist/jsx/connectkit/components/Common/ChainSelectDropdown/index.native.js.map +1 -1
- package/dist/jsx/connectkit/components/Common/ConnectorList/index.mjs +7 -3
- package/dist/jsx/connectkit/components/Common/ConnectorList/index.mjs.map +1 -1
- package/dist/jsx/connectkit/components/Common/ConnectorList/index.native.js +6 -2
- package/dist/jsx/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs +51 -9
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs.map +1 -1
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +62 -8
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
- package/dist/jsx/connectkit/components/Pages/About/graphics.mjs +5 -5
- package/dist/jsx/connectkit/components/Pages/About/graphics.mjs.map +1 -1
- package/dist/jsx/connectkit/components/Pages/About/graphics.native.js +5 -5
- package/dist/jsx/connectkit/components/Pages/About/graphics.native.js.map +1 -1
- package/dist/jsx/connectkit/connectors/embeddedDesktop.mjs +17 -0
- package/dist/jsx/connectkit/connectors/embeddedDesktop.mjs.map +1 -0
- package/dist/jsx/connectkit/connectors/embeddedDesktop.native.js +47 -0
- package/dist/jsx/connectkit/connectors/embeddedDesktop.native.js.map +1 -0
- package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.mjs +362 -0
- package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.mjs.map +1 -0
- package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.native.js +453 -0
- package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.native.js.map +1 -0
- package/dist/jsx/connectkit/connectors/syntheticChains.mjs +2 -1
- package/dist/jsx/connectkit/connectors/syntheticChains.mjs.map +1 -1
- package/dist/jsx/connectkit/connectors/syntheticChains.native.js +2 -1
- package/dist/jsx/connectkit/connectors/syntheticChains.native.js.map +1 -1
- package/dist/jsx/connectkit/defaultConnectors.mjs +25 -3
- package/dist/jsx/connectkit/defaultConnectors.mjs.map +1 -1
- package/dist/jsx/connectkit/defaultConnectors.native.js +24 -2
- package/dist/jsx/connectkit/defaultConnectors.native.js.map +1 -1
- package/dist/jsx/connectkit/siwe/connectIntent.mjs +25 -0
- package/dist/jsx/connectkit/siwe/connectIntent.mjs.map +1 -0
- package/dist/jsx/connectkit/siwe/connectIntent.native.js +55 -0
- package/dist/jsx/connectkit/siwe/connectIntent.native.js.map +1 -0
- package/dist/jsx/connectkit/wallets/useWallets.mjs +4 -2
- package/dist/jsx/connectkit/wallets/useWallets.mjs.map +1 -1
- package/dist/jsx/connectkit/wallets/useWallets.native.js +3 -1
- package/dist/jsx/connectkit/wallets/useWallets.native.js.map +1 -1
- package/dist/jsx/connectkit/wallets/walletConfigs.mjs +4 -3
- package/dist/jsx/connectkit/wallets/walletConfigs.mjs.map +1 -1
- package/dist/jsx/connectkit/wallets/walletConfigs.native.js +14 -13
- package/dist/jsx/connectkit/wallets/walletConfigs.native.js.map +1 -1
- package/dist/jsx/connectkit/web3Bridge.mjs +6 -1
- package/dist/jsx/connectkit/web3Bridge.mjs.map +1 -1
- package/dist/jsx/connectkit/web3Bridge.native.js +7 -0
- package/dist/jsx/connectkit/web3Bridge.native.js.map +1 -1
- package/dist/jsx/providers/WalletProvider.mjs +10 -14
- package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
- package/dist/jsx/providers/WalletProvider.native.js +8 -8
- package/dist/jsx/providers/WalletProvider.native.js.map +1 -1
- package/dist/jsx/providers/walletConfig.mjs +24 -2
- package/dist/jsx/providers/walletConfig.mjs.map +1 -1
- package/dist/jsx/providers/walletConfig.native.js +27 -0
- package/dist/jsx/providers/walletConfig.native.js.map +1 -1
- package/package.json +21 -14
- package/src/bridge/postMessageTransport.spec.ts +4 -3
- package/src/connectkit/components/Common/ChainSelectDropdown/index.tsx +2 -2
- package/src/connectkit/components/Common/ConnectorList/index.tsx +14 -4
- package/src/connectkit/components/ConnectModal/ConnectWithInjector/index.tsx +94 -10
- package/src/connectkit/components/Pages/About/graphics.tsx +5 -5
- package/src/connectkit/connectors/embeddedDesktop.spec.ts +47 -0
- package/src/connectkit/connectors/embeddedDesktop.ts +46 -0
- package/src/connectkit/connectors/metaMaskSdkConnector.ts +505 -0
- package/src/connectkit/connectors/syntheticChains.ts +11 -1
- package/src/connectkit/defaultConnectors.ts +27 -7
- package/src/connectkit/siwe/connectIntent.ts +49 -0
- package/src/connectkit/wallets/useWallets.tsx +2 -0
- package/src/connectkit/wallets/walletConfigs.tsx +4 -3
- package/src/connectkit/web3Bridge.tsx +14 -1
- package/src/providers/WalletProvider.native.tsx +51 -36
- package/src/providers/WalletProvider.tsx +11 -12
- package/src/providers/walletConfig.spec.ts +42 -0
- package/src/providers/walletConfig.ts +38 -1
- package/types/bridge/BridgeClient.d.ts +28 -0
- package/types/bridge/BridgeClient.d.ts.map +1 -0
- package/types/bridge/BridgeHost.d.ts +29 -0
- package/types/bridge/BridgeHost.d.ts.map +1 -0
- package/types/bridge/SolanaBridge.d.ts +22 -0
- package/types/bridge/SolanaBridge.d.ts.map +1 -0
- package/types/bridge/base64.d.ts +3 -0
- package/types/bridge/base64.d.ts.map +1 -0
- package/types/bridge/bridgeConnector.d.ts +21 -0
- package/types/bridge/bridgeConnector.d.ts.map +1 -0
- package/types/bridge/eip1193.d.ts +19 -0
- package/types/bridge/eip1193.d.ts.map +1 -0
- package/types/bridge/index.d.ts +10 -0
- package/types/bridge/index.d.ts.map +1 -0
- package/types/bridge/postMessageTransport.d.ts +17 -0
- package/types/bridge/postMessageTransport.d.ts.map +1 -0
- package/types/bridge/protocol.d.ts +21 -0
- package/types/bridge/protocol.d.ts.map +1 -0
- package/types/bridge/transport.d.ts +22 -0
- package/types/bridge/transport.d.ts.map +1 -0
- package/types/components/ConnectKitButton.d.ts +2 -0
- package/types/components/ConnectKitButton.d.ts.map +1 -0
- package/types/components/ConnectKitButton.native.d.ts +29 -0
- package/types/components/ConnectKitButton.native.d.ts.map +1 -0
- package/types/components/NetworkSwitcher.d.ts +6 -0
- package/types/components/NetworkSwitcher.d.ts.map +1 -0
- package/types/components/TransactionStatus.d.ts +34 -0
- package/types/components/TransactionStatus.d.ts.map +1 -0
- package/types/components/WalletButton.d.ts +24 -0
- package/types/components/WalletButton.d.ts.map +1 -0
- package/types/components/WalletButton.native.d.ts +30 -0
- package/types/components/WalletButton.native.d.ts.map +1 -0
- package/types/components/index.d.ts +5 -0
- package/types/components/index.d.ts.map +1 -0
- package/types/connectkit/adapters/BitcoinAdapter.d.ts +17 -0
- package/types/connectkit/adapters/BitcoinAdapter.d.ts.map +1 -0
- package/types/connectkit/adapters/EthereumAdapter.d.ts +23 -0
- package/types/connectkit/adapters/EthereumAdapter.d.ts.map +1 -0
- package/types/connectkit/adapters/SolanaAdapter.d.ts +14 -0
- package/types/connectkit/adapters/SolanaAdapter.d.ts.map +1 -0
- package/types/connectkit/adapters/SuiAdapter.d.ts +26 -0
- package/types/connectkit/adapters/SuiAdapter.d.ts.map +1 -0
- package/types/connectkit/adapters/discover.d.ts +20 -0
- package/types/connectkit/adapters/discover.d.ts.map +1 -0
- package/types/connectkit/adapters/index.d.ts +7 -0
- package/types/connectkit/adapters/index.d.ts.map +1 -0
- package/types/connectkit/adapters/messages.d.ts +16 -0
- package/types/connectkit/adapters/messages.d.ts.map +1 -0
- package/types/connectkit/adapters/types.d.ts +78 -0
- package/types/connectkit/adapters/types.d.ts.map +1 -0
- package/types/connectkit/assets/chains.d.ts +68 -0
- package/types/connectkit/assets/chains.d.ts.map +1 -0
- package/types/connectkit/components/BalanceButton/index.d.ts +10 -0
- package/types/connectkit/components/BalanceButton/index.d.ts.map +1 -0
- package/types/connectkit/components/Common/Avatar/index.d.ts +17 -0
- package/types/connectkit/components/Common/Avatar/index.d.ts.map +1 -0
- package/types/connectkit/components/Common/Avatar/styles.d.ts +3 -0
- package/types/connectkit/components/Common/Avatar/styles.d.ts.map +1 -0
- package/types/connectkit/components/Common/Chain/index.d.ts +9 -0
- package/types/connectkit/components/Common/Chain/index.d.ts.map +1 -0
- package/types/connectkit/components/Common/Chain/styles.d.ts +5 -0
- package/types/connectkit/components/Common/Chain/styles.d.ts.map +1 -0
- package/types/connectkit/components/Common/ChainSelect/index.d.ts +4 -0
- package/types/connectkit/components/Common/ChainSelect/index.d.ts.map +1 -0
- package/types/connectkit/components/Common/ChainSelectDropdown/index.d.ts +10 -0
- package/types/connectkit/components/Common/ChainSelectDropdown/index.d.ts.map +1 -0
- package/types/connectkit/components/Common/ChainSelectDropdown/styles.d.ts +5 -0
- package/types/connectkit/components/Common/ChainSelectDropdown/styles.d.ts.map +1 -0
- package/types/connectkit/components/Common/ChainSelectList/index.d.ts +5 -0
- package/types/connectkit/components/Common/ChainSelectList/index.d.ts.map +1 -0
- package/types/connectkit/components/Common/ChainSelectList/styles.d.ts +10 -0
- package/types/connectkit/components/Common/ChainSelectList/styles.d.ts.map +1 -0
- package/types/connectkit/components/Common/ConnectorList/index.d.ts +3 -0
- package/types/connectkit/components/Common/ConnectorList/index.d.ts.map +1 -0
- package/types/connectkit/components/Common/ConnectorList/styles.d.ts +6 -0
- package/types/connectkit/components/Common/ConnectorList/styles.d.ts.map +1 -0
- package/types/connectkit/components/ConnectButton/index.d.ts +34 -0
- package/types/connectkit/components/ConnectButton/index.d.ts.map +1 -0
- package/types/connectkit/components/ConnectButton/styles.d.ts +5 -0
- package/types/connectkit/components/ConnectButton/styles.d.ts.map +1 -0
- package/types/connectkit/components/ConnectModal/ConnectUsing.d.ts +3 -0
- package/types/connectkit/components/ConnectModal/ConnectUsing.d.ts.map +1 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/index.d.ts +10 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/index.d.ts.map +1 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/styles.d.ts +6 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/styles.d.ts.map +1 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/index.d.ts +6 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/index.d.ts.map +1 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/styles.d.ts +5 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/styles.d.ts.map +1 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/index.d.ts +16 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/index.d.ts.map +1 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/styles.d.ts +7 -0
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/styles.d.ts.map +1 -0
- package/types/connectkit/components/ConnectModal/ConnectWithQRCode.d.ts +6 -0
- package/types/connectkit/components/ConnectModal/ConnectWithQRCode.d.ts.map +1 -0
- package/types/connectkit/components/ConnectModal/demo.d.ts +12 -0
- package/types/connectkit/components/ConnectModal/demo.d.ts.map +1 -0
- package/types/connectkit/components/NetworkButton/index.d.ts +9 -0
- package/types/connectkit/components/NetworkButton/index.d.ts.map +1 -0
- package/types/connectkit/components/Pages/About/graphics.d.ts +12 -0
- package/types/connectkit/components/Pages/About/graphics.d.ts.map +1 -0
- package/types/connectkit/components/Pages/About/index.d.ts +4 -0
- package/types/connectkit/components/Pages/About/index.d.ts.map +1 -0
- package/types/connectkit/components/Pages/About/styles.d.ts +9 -0
- package/types/connectkit/components/Pages/About/styles.d.ts.map +1 -0
- package/types/connectkit/components/Pages/Connectors/index.d.ts +4 -0
- package/types/connectkit/components/Pages/Connectors/index.d.ts.map +1 -0
- package/types/connectkit/components/Pages/Connectors/styles.d.ts +11 -0
- package/types/connectkit/components/Pages/Connectors/styles.d.ts.map +1 -0
- package/types/connectkit/components/Pages/DownloadApp/index.d.ts +3 -0
- package/types/connectkit/components/Pages/DownloadApp/index.d.ts.map +1 -0
- package/types/connectkit/components/Pages/MobileConnectors/index.d.ts +4 -0
- package/types/connectkit/components/Pages/MobileConnectors/index.d.ts.map +1 -0
- package/types/connectkit/components/Pages/MobileConnectors/styles.d.ts +6 -0
- package/types/connectkit/components/Pages/MobileConnectors/styles.d.ts.map +1 -0
- package/types/connectkit/components/Pages/Onboarding/index.d.ts +4 -0
- package/types/connectkit/components/Pages/Onboarding/index.d.ts.map +1 -0
- package/types/connectkit/components/Pages/Onboarding/styles.d.ts +10 -0
- package/types/connectkit/components/Pages/Onboarding/styles.d.ts.map +1 -0
- package/types/connectkit/components/Pages/Profile/index.d.ts +6 -0
- package/types/connectkit/components/Pages/Profile/index.d.ts.map +1 -0
- package/types/connectkit/components/Pages/Profile/styles.d.ts +7 -0
- package/types/connectkit/components/Pages/Profile/styles.d.ts.map +1 -0
- package/types/connectkit/components/Pages/SignInWithEthereum/index.d.ts +4 -0
- package/types/connectkit/components/Pages/SignInWithEthereum/index.d.ts.map +1 -0
- package/types/connectkit/components/Pages/SignInWithEthereum/styles.d.ts +6 -0
- package/types/connectkit/components/Pages/SignInWithEthereum/styles.d.ts.map +1 -0
- package/types/connectkit/components/Pages/SwitchNetworks/index.d.ts +4 -0
- package/types/connectkit/components/Pages/SwitchNetworks/index.d.ts.map +1 -0
- package/types/connectkit/components/Standard/SIWE/index.d.ts +10 -0
- package/types/connectkit/components/Standard/SIWE/index.d.ts.map +1 -0
- package/types/connectkit/components/Standard/SIWE/styles.d.ts +2 -0
- package/types/connectkit/components/Standard/SIWE/styles.d.ts.map +1 -0
- package/types/connectkit/components/contexts/web3/index.d.ts +26 -0
- package/types/connectkit/components/contexts/web3/index.d.ts.map +1 -0
- package/types/connectkit/connectors/createSiwwMessage.d.ts +21 -0
- package/types/connectkit/connectors/createSiwwMessage.d.ts.map +1 -0
- package/types/connectkit/connectors/embeddedDesktop.d.ts +28 -0
- package/types/connectkit/connectors/embeddedDesktop.d.ts.map +1 -0
- package/types/connectkit/connectors/ensureSiwwConnectors.d.ts +14 -0
- package/types/connectkit/connectors/ensureSiwwConnectors.d.ts.map +1 -0
- package/types/connectkit/connectors/getSiwwConnectors.d.ts +9 -0
- package/types/connectkit/connectors/getSiwwConnectors.d.ts.map +1 -0
- package/types/connectkit/connectors/metaMaskSdkConnector.d.ts +30 -0
- package/types/connectkit/connectors/metaMaskSdkConnector.d.ts.map +1 -0
- package/types/connectkit/connectors/syntheticChains.d.ts +13 -0
- package/types/connectkit/connectors/syntheticChains.d.ts.map +1 -0
- package/types/connectkit/connectors/walletAdapterConnector.d.ts +37 -0
- package/types/connectkit/connectors/walletAdapterConnector.d.ts.map +1 -0
- package/types/connectkit/constants/chainConfigs.d.ts +19 -0
- package/types/connectkit/constants/chainConfigs.d.ts.map +1 -0
- package/types/connectkit/defaultConfig.d.ts +18 -0
- package/types/connectkit/defaultConfig.d.ts.map +1 -0
- package/types/connectkit/defaultConnectors.d.ts +18 -0
- package/types/connectkit/defaultConnectors.d.ts.map +1 -0
- package/types/connectkit/defaultTransports.d.ts +16 -0
- package/types/connectkit/defaultTransports.d.ts.map +1 -0
- package/types/connectkit/hooks/connectors/useCoinbaseWalletUri.d.ts +1 -0
- package/types/connectkit/hooks/connectors/useCoinbaseWalletUri.d.ts.map +1 -0
- package/types/connectkit/hooks/connectors/useWalletConnectUri.d.ts +8 -0
- package/types/connectkit/hooks/connectors/useWalletConnectUri.d.ts.map +1 -0
- package/types/connectkit/hooks/useChainIsSupported.d.ts +2 -0
- package/types/connectkit/hooks/useChainIsSupported.d.ts.map +1 -0
- package/types/connectkit/hooks/useChains.d.ts +3 -0
- package/types/connectkit/hooks/useChains.d.ts.map +1 -0
- package/types/connectkit/hooks/useConnect.d.ts +119 -0
- package/types/connectkit/hooks/useConnect.d.ts.map +1 -0
- package/types/connectkit/hooks/useConnectCallback.d.ts +9 -0
- package/types/connectkit/hooks/useConnectCallback.d.ts.map +1 -0
- package/types/connectkit/hooks/useConnectors.d.ts +9 -0
- package/types/connectkit/hooks/useConnectors.d.ts.map +1 -0
- package/types/connectkit/hooks/useEnsFallbackConfig.d.ts +3 -0
- package/types/connectkit/hooks/useEnsFallbackConfig.d.ts.map +1 -0
- package/types/connectkit/hooks/useLastConnector.d.ts +5 -0
- package/types/connectkit/hooks/useLastConnector.d.ts.map +1 -0
- package/types/connectkit/hooks/useWalletConnectModal.d.ts +5 -0
- package/types/connectkit/hooks/useWalletConnectModal.d.ts.map +1 -0
- package/types/connectkit/index.d.ts +28 -0
- package/types/connectkit/index.d.ts.map +1 -0
- package/types/connectkit/profileHeaderAction.d.ts +4 -0
- package/types/connectkit/profileHeaderAction.d.ts.map +1 -0
- package/types/connectkit/screens.d.ts +26 -0
- package/types/connectkit/screens.d.ts.map +1 -0
- package/types/connectkit/siwe/SIWEContext.d.ts +47 -0
- package/types/connectkit/siwe/SIWEContext.d.ts.map +1 -0
- package/types/connectkit/siwe/SIWEProvider.d.ts +12 -0
- package/types/connectkit/siwe/SIWEProvider.d.ts.map +1 -0
- package/types/connectkit/siwe/connectIntent.d.ts +5 -0
- package/types/connectkit/siwe/connectIntent.d.ts.map +1 -0
- package/types/connectkit/siwe/index.d.ts +5 -0
- package/types/connectkit/siwe/index.d.ts.map +1 -0
- package/types/connectkit/siwe/useSIWE.d.ts +22 -0
- package/types/connectkit/siwe/useSIWE.d.ts.map +1 -0
- package/types/connectkit/useWeb3Modal.d.ts +15 -0
- package/types/connectkit/useWeb3Modal.d.ts.map +1 -0
- package/types/connectkit/wallets/index.d.ts +8 -0
- package/types/connectkit/wallets/index.d.ts.map +1 -0
- package/types/connectkit/wallets/useWallets.d.ts +13 -0
- package/types/connectkit/wallets/useWallets.d.ts.map +1 -0
- package/types/connectkit/wallets/walletConfigs.d.ts +31 -0
- package/types/connectkit/wallets/walletConfigs.d.ts.map +1 -0
- package/types/connectkit/web3Bridge.d.ts +7 -0
- package/types/connectkit/web3Bridge.d.ts.map +1 -0
- package/types/connectkit/web3Provider.d.ts +6 -0
- package/types/connectkit/web3Provider.d.ts.map +1 -0
- package/types/examples/LockContract.d.ts +68 -0
- package/types/examples/LockContract.d.ts.map +1 -0
- package/types/examples/index.d.ts +2 -0
- package/types/examples/index.d.ts.map +1 -0
- package/types/hooks/index.d.ts +5 -0
- package/types/hooks/index.d.ts.map +1 -0
- package/types/hooks/useContractRead.d.ts +34 -0
- package/types/hooks/useContractRead.d.ts.map +1 -0
- package/types/hooks/useContractWrite.d.ts +45 -0
- package/types/hooks/useContractWrite.d.ts.map +1 -0
- package/types/hooks/useWallet.d.ts +24 -0
- package/types/hooks/useWallet.d.ts.map +1 -0
- package/types/index.d.ts +8 -0
- package/types/index.d.ts.map +1 -0
- package/types/providers/WalletProvider.d.ts +11 -0
- package/types/providers/WalletProvider.d.ts.map +1 -0
- package/types/providers/WalletProvider.native.d.ts +23 -0
- package/types/providers/WalletProvider.native.d.ts.map +1 -0
- package/types/providers/index.d.ts +2 -0
- package/types/providers/index.d.ts.map +1 -0
- package/types/providers/mockConnector.d.ts +25 -0
- package/types/providers/mockConnector.d.ts.map +1 -0
- package/types/providers/native/deepLink.d.ts +11 -0
- package/types/providers/native/deepLink.d.ts.map +1 -0
- package/types/providers/native/inject.d.ts +17 -0
- package/types/providers/native/inject.d.ts.map +1 -0
- package/types/providers/native/visibility.d.ts +13 -0
- package/types/providers/native/visibility.d.ts.map +1 -0
- package/types/providers/walletConfig.d.ts +46 -0
- package/types/providers/walletConfig.d.ts.map +1 -0
- package/types/siws/index.d.ts +4 -0
- package/types/siws/index.d.ts.map +1 -0
- package/types/siws/message.d.ts +23 -0
- package/types/siws/message.d.ts.map +1 -0
- package/types/siws/signWithBridge.d.ts +8 -0
- package/types/siws/signWithBridge.d.ts.map +1 -0
- package/types/siws/verify.d.ts +9 -0
- package/types/siws/verify.d.ts.map +1 -0
- package/dist/cjs/bridge/BridgeClient.spec.cjs +0 -128
- package/dist/cjs/bridge/BridgeClient.spec.native.js +0 -139
- package/dist/cjs/bridge/BridgeClient.spec.native.js.map +0 -1
- package/dist/cjs/bridge/BridgeHost.spec.cjs +0 -86
- package/dist/cjs/bridge/BridgeHost.spec.native.js +0 -95
- package/dist/cjs/bridge/BridgeHost.spec.native.js.map +0 -1
- package/dist/cjs/bridge/SolanaBridge.spec.cjs +0 -90
- package/dist/cjs/bridge/SolanaBridge.spec.native.js +0 -105
- package/dist/cjs/bridge/SolanaBridge.spec.native.js.map +0 -1
- package/dist/cjs/bridge/base64.spec.cjs +0 -27
- package/dist/cjs/bridge/base64.spec.native.js +0 -34
- package/dist/cjs/bridge/base64.spec.native.js.map +0 -1
- package/dist/cjs/bridge/bridgeConnector.spec.cjs +0 -85
- package/dist/cjs/bridge/bridgeConnector.spec.native.js +0 -98
- package/dist/cjs/bridge/bridgeConnector.spec.native.js.map +0 -1
- package/dist/cjs/bridge/eip1193.spec.cjs +0 -61
- package/dist/cjs/bridge/eip1193.spec.native.js +0 -64
- package/dist/cjs/bridge/eip1193.spec.native.js.map +0 -1
- package/dist/cjs/bridge/index.spec.cjs +0 -33
- package/dist/cjs/bridge/index.spec.native.js +0 -41
- package/dist/cjs/bridge/index.spec.native.js.map +0 -1
- package/dist/cjs/bridge/postMessageTransport.spec.cjs +0 -74
- package/dist/cjs/bridge/postMessageTransport.spec.native.js +0 -95
- package/dist/cjs/bridge/postMessageTransport.spec.native.js.map +0 -1
- package/dist/cjs/bridge/protocol.spec.cjs +0 -41
- package/dist/cjs/bridge/protocol.spec.native.js +0 -49
- package/dist/cjs/bridge/protocol.spec.native.js.map +0 -1
- package/dist/cjs/bridge/transport.spec.cjs +0 -50
- package/dist/cjs/bridge/transport.spec.native.js +0 -55
- package/dist/cjs/bridge/transport.spec.native.js.map +0 -1
- package/dist/cjs/components/transactionStatus.spec.cjs +0 -166
- package/dist/cjs/components/transactionStatus.spec.native.js +0 -188
- package/dist/cjs/components/transactionStatus.spec.native.js.map +0 -1
- package/dist/cjs/hooks/useContractRead.spec.cjs +0 -143
- package/dist/cjs/hooks/useContractRead.spec.native.js +0 -168
- package/dist/cjs/hooks/useContractRead.spec.native.js.map +0 -1
- package/dist/cjs/hooks/useContractWrite.spec.cjs +0 -207
- package/dist/cjs/hooks/useContractWrite.spec.native.js +0 -236
- package/dist/cjs/hooks/useContractWrite.spec.native.js.map +0 -1
- package/dist/cjs/hooks/useWallet.spec.cjs +0 -233
- package/dist/cjs/hooks/useWallet.spec.native.js +0 -262
- package/dist/cjs/hooks/useWallet.spec.native.js.map +0 -1
- package/dist/cjs/providers/native/deepLink.spec.cjs +0 -36
- package/dist/cjs/providers/native/deepLink.spec.native.js +0 -39
- package/dist/cjs/providers/native/deepLink.spec.native.js.map +0 -1
- package/dist/cjs/providers/native/inject.spec.cjs +0 -50
- package/dist/cjs/providers/native/inject.spec.native.js +0 -60
- package/dist/cjs/providers/native/inject.spec.native.js.map +0 -1
- package/dist/cjs/providers/native/visibility.spec.cjs +0 -33
- package/dist/cjs/providers/native/visibility.spec.native.js +0 -36
- package/dist/cjs/providers/native/visibility.spec.native.js.map +0 -1
- package/dist/cjs/siws/signWithBridge.spec.cjs +0 -64
- package/dist/cjs/siws/signWithBridge.spec.native.js +0 -67
- package/dist/cjs/siws/signWithBridge.spec.native.js.map +0 -1
- package/dist/cjs/siws/verify.spec.cjs +0 -94
- package/dist/cjs/siws/verify.spec.native.js +0 -97
- package/dist/cjs/siws/verify.spec.native.js.map +0 -1
- package/dist/esm/bridge/BridgeClient.spec.mjs +0 -129
- package/dist/esm/bridge/BridgeClient.spec.mjs.map +0 -1
- package/dist/esm/bridge/BridgeClient.spec.native.js +0 -137
- package/dist/esm/bridge/BridgeClient.spec.native.js.map +0 -1
- package/dist/esm/bridge/BridgeHost.spec.mjs +0 -87
- package/dist/esm/bridge/BridgeHost.spec.mjs.map +0 -1
- package/dist/esm/bridge/BridgeHost.spec.native.js +0 -93
- package/dist/esm/bridge/BridgeHost.spec.native.js.map +0 -1
- package/dist/esm/bridge/SolanaBridge.spec.mjs +0 -91
- package/dist/esm/bridge/SolanaBridge.spec.mjs.map +0 -1
- package/dist/esm/bridge/SolanaBridge.spec.native.js +0 -103
- package/dist/esm/bridge/SolanaBridge.spec.native.js.map +0 -1
- package/dist/esm/bridge/base64.spec.mjs +0 -28
- package/dist/esm/bridge/base64.spec.mjs.map +0 -1
- package/dist/esm/bridge/base64.spec.native.js +0 -32
- package/dist/esm/bridge/base64.spec.native.js.map +0 -1
- package/dist/esm/bridge/bridgeConnector.spec.mjs +0 -86
- package/dist/esm/bridge/bridgeConnector.spec.mjs.map +0 -1
- package/dist/esm/bridge/bridgeConnector.spec.native.js +0 -96
- package/dist/esm/bridge/bridgeConnector.spec.native.js.map +0 -1
- package/dist/esm/bridge/eip1193.spec.mjs +0 -62
- package/dist/esm/bridge/eip1193.spec.mjs.map +0 -1
- package/dist/esm/bridge/eip1193.spec.native.js +0 -62
- package/dist/esm/bridge/eip1193.spec.native.js.map +0 -1
- package/dist/esm/bridge/index.spec.mjs +0 -10
- package/dist/esm/bridge/index.spec.mjs.map +0 -1
- package/dist/esm/bridge/index.spec.native.js +0 -15
- package/dist/esm/bridge/index.spec.native.js.map +0 -1
- package/dist/esm/bridge/postMessageTransport.spec.mjs +0 -75
- package/dist/esm/bridge/postMessageTransport.spec.mjs.map +0 -1
- package/dist/esm/bridge/postMessageTransport.spec.native.js +0 -93
- package/dist/esm/bridge/postMessageTransport.spec.native.js.map +0 -1
- package/dist/esm/bridge/protocol.spec.mjs +0 -42
- package/dist/esm/bridge/protocol.spec.mjs.map +0 -1
- package/dist/esm/bridge/protocol.spec.native.js +0 -47
- package/dist/esm/bridge/protocol.spec.native.js.map +0 -1
- package/dist/esm/bridge/transport.spec.mjs +0 -51
- package/dist/esm/bridge/transport.spec.mjs.map +0 -1
- package/dist/esm/bridge/transport.spec.native.js +0 -53
- package/dist/esm/bridge/transport.spec.native.js.map +0 -1
- package/dist/esm/components/transactionStatus.spec.mjs +0 -167
- package/dist/esm/components/transactionStatus.spec.mjs.map +0 -1
- package/dist/esm/components/transactionStatus.spec.native.js +0 -186
- package/dist/esm/components/transactionStatus.spec.native.js.map +0 -1
- package/dist/esm/hooks/useContractRead.spec.mjs +0 -144
- package/dist/esm/hooks/useContractRead.spec.mjs.map +0 -1
- package/dist/esm/hooks/useContractRead.spec.native.js +0 -166
- package/dist/esm/hooks/useContractRead.spec.native.js.map +0 -1
- package/dist/esm/hooks/useContractWrite.spec.mjs +0 -208
- package/dist/esm/hooks/useContractWrite.spec.mjs.map +0 -1
- package/dist/esm/hooks/useContractWrite.spec.native.js +0 -234
- package/dist/esm/hooks/useContractWrite.spec.native.js.map +0 -1
- package/dist/esm/hooks/useWallet.spec.mjs +0 -234
- package/dist/esm/hooks/useWallet.spec.mjs.map +0 -1
- package/dist/esm/hooks/useWallet.spec.native.js +0 -260
- package/dist/esm/hooks/useWallet.spec.native.js.map +0 -1
- package/dist/esm/providers/native/deepLink.spec.mjs +0 -37
- package/dist/esm/providers/native/deepLink.spec.mjs.map +0 -1
- package/dist/esm/providers/native/deepLink.spec.native.js +0 -37
- package/dist/esm/providers/native/deepLink.spec.native.js.map +0 -1
- package/dist/esm/providers/native/inject.spec.mjs +0 -51
- package/dist/esm/providers/native/inject.spec.mjs.map +0 -1
- package/dist/esm/providers/native/inject.spec.native.js +0 -58
- package/dist/esm/providers/native/inject.spec.native.js.map +0 -1
- package/dist/esm/providers/native/visibility.spec.mjs +0 -34
- package/dist/esm/providers/native/visibility.spec.mjs.map +0 -1
- package/dist/esm/providers/native/visibility.spec.native.js +0 -34
- package/dist/esm/providers/native/visibility.spec.native.js.map +0 -1
- package/dist/esm/siws/signWithBridge.spec.mjs +0 -41
- package/dist/esm/siws/signWithBridge.spec.mjs.map +0 -1
- package/dist/esm/siws/signWithBridge.spec.native.js +0 -41
- package/dist/esm/siws/signWithBridge.spec.native.js.map +0 -1
- package/dist/esm/siws/verify.spec.mjs +0 -71
- package/dist/esm/siws/verify.spec.mjs.map +0 -1
- package/dist/esm/siws/verify.spec.native.js +0 -71
- package/dist/esm/siws/verify.spec.native.js.map +0 -1
- package/dist/jsx/bridge/BridgeClient.spec.mjs +0 -129
- package/dist/jsx/bridge/BridgeClient.spec.mjs.map +0 -1
- package/dist/jsx/bridge/BridgeClient.spec.native.js +0 -139
- package/dist/jsx/bridge/BridgeClient.spec.native.js.map +0 -1
- package/dist/jsx/bridge/BridgeHost.spec.mjs +0 -87
- package/dist/jsx/bridge/BridgeHost.spec.mjs.map +0 -1
- package/dist/jsx/bridge/BridgeHost.spec.native.js +0 -95
- package/dist/jsx/bridge/BridgeHost.spec.native.js.map +0 -1
- package/dist/jsx/bridge/SolanaBridge.spec.mjs +0 -91
- package/dist/jsx/bridge/SolanaBridge.spec.mjs.map +0 -1
- package/dist/jsx/bridge/SolanaBridge.spec.native.js +0 -105
- package/dist/jsx/bridge/SolanaBridge.spec.native.js.map +0 -1
- package/dist/jsx/bridge/base64.spec.mjs +0 -28
- package/dist/jsx/bridge/base64.spec.mjs.map +0 -1
- package/dist/jsx/bridge/base64.spec.native.js +0 -34
- package/dist/jsx/bridge/base64.spec.native.js.map +0 -1
- package/dist/jsx/bridge/bridgeConnector.spec.mjs +0 -86
- package/dist/jsx/bridge/bridgeConnector.spec.mjs.map +0 -1
- package/dist/jsx/bridge/bridgeConnector.spec.native.js +0 -98
- package/dist/jsx/bridge/bridgeConnector.spec.native.js.map +0 -1
- package/dist/jsx/bridge/eip1193.spec.mjs +0 -62
- package/dist/jsx/bridge/eip1193.spec.mjs.map +0 -1
- package/dist/jsx/bridge/eip1193.spec.native.js +0 -64
- package/dist/jsx/bridge/eip1193.spec.native.js.map +0 -1
- package/dist/jsx/bridge/index.spec.mjs +0 -10
- package/dist/jsx/bridge/index.spec.mjs.map +0 -1
- package/dist/jsx/bridge/index.spec.native.js +0 -41
- package/dist/jsx/bridge/index.spec.native.js.map +0 -1
- package/dist/jsx/bridge/postMessageTransport.spec.mjs +0 -75
- package/dist/jsx/bridge/postMessageTransport.spec.mjs.map +0 -1
- package/dist/jsx/bridge/postMessageTransport.spec.native.js +0 -95
- package/dist/jsx/bridge/postMessageTransport.spec.native.js.map +0 -1
- package/dist/jsx/bridge/protocol.spec.mjs +0 -42
- package/dist/jsx/bridge/protocol.spec.mjs.map +0 -1
- package/dist/jsx/bridge/protocol.spec.native.js +0 -49
- package/dist/jsx/bridge/protocol.spec.native.js.map +0 -1
- package/dist/jsx/bridge/transport.spec.mjs +0 -51
- package/dist/jsx/bridge/transport.spec.mjs.map +0 -1
- package/dist/jsx/bridge/transport.spec.native.js +0 -55
- package/dist/jsx/bridge/transport.spec.native.js.map +0 -1
- package/dist/jsx/components/transactionStatus.spec.mjs +0 -167
- package/dist/jsx/components/transactionStatus.spec.mjs.map +0 -1
- package/dist/jsx/components/transactionStatus.spec.native.js +0 -188
- package/dist/jsx/components/transactionStatus.spec.native.js.map +0 -1
- package/dist/jsx/hooks/useContractRead.spec.mjs +0 -144
- package/dist/jsx/hooks/useContractRead.spec.mjs.map +0 -1
- package/dist/jsx/hooks/useContractRead.spec.native.js +0 -168
- package/dist/jsx/hooks/useContractRead.spec.native.js.map +0 -1
- package/dist/jsx/hooks/useContractWrite.spec.mjs +0 -208
- package/dist/jsx/hooks/useContractWrite.spec.mjs.map +0 -1
- package/dist/jsx/hooks/useContractWrite.spec.native.js +0 -236
- package/dist/jsx/hooks/useContractWrite.spec.native.js.map +0 -1
- package/dist/jsx/hooks/useWallet.spec.mjs +0 -234
- package/dist/jsx/hooks/useWallet.spec.mjs.map +0 -1
- package/dist/jsx/hooks/useWallet.spec.native.js +0 -262
- package/dist/jsx/hooks/useWallet.spec.native.js.map +0 -1
- package/dist/jsx/providers/native/deepLink.spec.mjs +0 -37
- package/dist/jsx/providers/native/deepLink.spec.mjs.map +0 -1
- package/dist/jsx/providers/native/deepLink.spec.native.js +0 -39
- package/dist/jsx/providers/native/deepLink.spec.native.js.map +0 -1
- package/dist/jsx/providers/native/inject.spec.mjs +0 -51
- package/dist/jsx/providers/native/inject.spec.mjs.map +0 -1
- package/dist/jsx/providers/native/inject.spec.native.js +0 -60
- package/dist/jsx/providers/native/inject.spec.native.js.map +0 -1
- package/dist/jsx/providers/native/visibility.spec.mjs +0 -34
- package/dist/jsx/providers/native/visibility.spec.mjs.map +0 -1
- package/dist/jsx/providers/native/visibility.spec.native.js +0 -36
- package/dist/jsx/providers/native/visibility.spec.native.js.map +0 -1
- package/dist/jsx/siws/signWithBridge.spec.mjs +0 -41
- package/dist/jsx/siws/signWithBridge.spec.mjs.map +0 -1
- package/dist/jsx/siws/signWithBridge.spec.native.js +0 -67
- package/dist/jsx/siws/signWithBridge.spec.native.js.map +0 -1
- package/dist/jsx/siws/verify.spec.mjs +0 -71
- package/dist/jsx/siws/verify.spec.mjs.map +0 -1
- package/dist/jsx/siws/verify.spec.native.js +0 -97
- package/dist/jsx/siws/verify.spec.native.js.map +0 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tauri (and similar) desktop shells load the *web* bundle inside a native
|
|
3
|
+
* WebView. Browser extensions never inject there, so MetaMask must use the SDK
|
|
4
|
+
* remote/QR path — never `window.location.href = metamask://…`, which would
|
|
5
|
+
* navigate the whole WebView away from the app.
|
|
6
|
+
*
|
|
7
|
+
* Intentionally does NOT flip `@multiplatform.one/platform` `isTauri`: the web
|
|
8
|
+
* bundle running in Tauri currently keeps web platform flags (better-auth
|
|
9
|
+
* session, etc.). Wallet code detects the shell locally via `__TAURI*`.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export function isEmbeddedDesktopWebview(
|
|
13
|
+
win: Window & {
|
|
14
|
+
__TAURI_INTERNALS__?: unknown;
|
|
15
|
+
__TAURI__?: unknown;
|
|
16
|
+
} = typeof window !== "undefined" ? window : (undefined as never),
|
|
17
|
+
): boolean {
|
|
18
|
+
if (typeof win === "undefined" || !win) return false;
|
|
19
|
+
return !!(win.__TAURI_INTERNALS__ || win.__TAURI__);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type MetaMaskEmbeddedDesktopOptions = {
|
|
23
|
+
/** Prefer https://metamask.app.link over metamask:// in the QR payload. */
|
|
24
|
+
useDeeplink: false;
|
|
25
|
+
/** Suppress SDK InstallModal custom-elements (WKWebView-hostile); ConnectKit renders QR. */
|
|
26
|
+
headless: true;
|
|
27
|
+
/**
|
|
28
|
+
* Never assign location.href for custom schemes. https universal links may
|
|
29
|
+
* open in the system browser via window.open; custom schemes are ignored.
|
|
30
|
+
*/
|
|
31
|
+
openDeeplink: (url: string) => void;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/** MetaMask SDK options that are safe inside Tauri/WebView2/WKWebView. */
|
|
35
|
+
export function metaMaskOptionsForEmbeddedDesktop(): MetaMaskEmbeddedDesktopOptions {
|
|
36
|
+
return {
|
|
37
|
+
useDeeplink: false,
|
|
38
|
+
headless: true,
|
|
39
|
+
openDeeplink: (url: string) => {
|
|
40
|
+
if (typeof window === "undefined") return;
|
|
41
|
+
// Custom schemes (metamask://) must not navigate the WebView.
|
|
42
|
+
if (!/^https?:\/\//i.test(url)) return;
|
|
43
|
+
window.open(url, "_blank", "noopener,noreferrer");
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
// wagmi connector for MetaMask over the CLASSIC @metamask/sdk (0.33.x) transport,
|
|
2
|
+
// ported from @wagmi/connectors@5.11.2 src/metaMask.ts onto wagmi 3's connector API.
|
|
3
|
+
//
|
|
4
|
+
// Why not @wagmi/connectors 8.x's metaMask() (MWP / @metamask/connect-evm): MWP has
|
|
5
|
+
// no story for the dapp page freezing or being discarded while the wallet app is
|
|
6
|
+
// foregrounded — on Android the tab's relay websocket dies mid-handshake and the
|
|
7
|
+
// wallet's approval publishes to a channel nobody re-reads, so mobile-browser
|
|
8
|
+
// deeplink connects never complete (verified on-device 2026-07-15 against both
|
|
9
|
+
// connect-evm 1.4.0 and 2.1.1). The classic SDK survives that same bounce by
|
|
10
|
+
// design: it persists channel keys, reconnects its own socket.io relay, and
|
|
11
|
+
// re-requests pending results on resume — the promanager keycloak login uses it
|
|
12
|
+
// and is e2e-verified on real Android MetaMask.
|
|
13
|
+
//
|
|
14
|
+
// Kept identical to upstream where possible; the id stays `metaMaskSDK`, which is
|
|
15
|
+
// what isMetaMaskConnector(), useWallets' EIP-6963 dedupe, and ConnectWithInjector's
|
|
16
|
+
// display_uri deeplink listener all key off.
|
|
17
|
+
import type { MetaMaskSDK, MetaMaskSDKOptions, RPC_URLS_MAP, SDKProvider } from "@metamask/sdk";
|
|
18
|
+
import {
|
|
19
|
+
ChainNotConfiguredError,
|
|
20
|
+
type Connector,
|
|
21
|
+
createConnector,
|
|
22
|
+
extractRpcUrls,
|
|
23
|
+
ProviderNotFoundError,
|
|
24
|
+
} from "@wagmi/core";
|
|
25
|
+
import type {
|
|
26
|
+
Compute,
|
|
27
|
+
ExactPartial,
|
|
28
|
+
OneOf,
|
|
29
|
+
RemoveUndefined,
|
|
30
|
+
UnionCompute,
|
|
31
|
+
} from "@wagmi/core/internal";
|
|
32
|
+
import {
|
|
33
|
+
type AddEthereumChainParameter,
|
|
34
|
+
type Address,
|
|
35
|
+
getAddress,
|
|
36
|
+
type Hex,
|
|
37
|
+
hexToNumber,
|
|
38
|
+
numberToHex,
|
|
39
|
+
type ProviderConnectInfo,
|
|
40
|
+
type ProviderRpcError,
|
|
41
|
+
ResourceUnavailableRpcError,
|
|
42
|
+
type RpcError,
|
|
43
|
+
SwitchChainError,
|
|
44
|
+
UserRejectedRequestError,
|
|
45
|
+
withRetry,
|
|
46
|
+
withTimeout,
|
|
47
|
+
} from "viem";
|
|
48
|
+
|
|
49
|
+
export type MetaMaskSdkParameters = UnionCompute<
|
|
50
|
+
WagmiMetaMaskSDKOptions &
|
|
51
|
+
OneOf<
|
|
52
|
+
| {
|
|
53
|
+
/* Shortcut to connect and sign a message */
|
|
54
|
+
connectAndSign?: string | undefined;
|
|
55
|
+
}
|
|
56
|
+
| {
|
|
57
|
+
/* Allow `connectWith` any rpc method */
|
|
58
|
+
connectWith?: { method: string; params: unknown[] } | undefined;
|
|
59
|
+
}
|
|
60
|
+
>
|
|
61
|
+
>;
|
|
62
|
+
|
|
63
|
+
type WagmiMetaMaskSDKOptions = Compute<
|
|
64
|
+
ExactPartial<
|
|
65
|
+
Omit<
|
|
66
|
+
MetaMaskSDKOptions,
|
|
67
|
+
| "_source"
|
|
68
|
+
| "forceDeleteProvider"
|
|
69
|
+
| "forceInjectProvider"
|
|
70
|
+
| "injectProvider"
|
|
71
|
+
| "useDeeplink"
|
|
72
|
+
| "readonlyRPCMap"
|
|
73
|
+
>
|
|
74
|
+
> & {
|
|
75
|
+
/** @deprecated */
|
|
76
|
+
forceDeleteProvider?: MetaMaskSDKOptions["forceDeleteProvider"];
|
|
77
|
+
/** @deprecated */
|
|
78
|
+
forceInjectProvider?: MetaMaskSDKOptions["forceInjectProvider"];
|
|
79
|
+
/** @deprecated */
|
|
80
|
+
injectProvider?: MetaMaskSDKOptions["injectProvider"];
|
|
81
|
+
/** @deprecated */
|
|
82
|
+
useDeeplink?: MetaMaskSDKOptions["useDeeplink"];
|
|
83
|
+
}
|
|
84
|
+
>;
|
|
85
|
+
|
|
86
|
+
metaMaskSdk.type = "metaMask" as const;
|
|
87
|
+
export function metaMaskSdk(parameters: MetaMaskSdkParameters = {}) {
|
|
88
|
+
type Provider = SDKProvider;
|
|
89
|
+
type Properties = {
|
|
90
|
+
onConnect(connectInfo: ProviderConnectInfo): void;
|
|
91
|
+
onDisplayUri(uri: string): void;
|
|
92
|
+
};
|
|
93
|
+
type Listener = Parameters<Provider["on"]>[1];
|
|
94
|
+
|
|
95
|
+
let sdk: MetaMaskSDK;
|
|
96
|
+
let provider: Provider | undefined;
|
|
97
|
+
let providerPromise: Promise<typeof provider>;
|
|
98
|
+
|
|
99
|
+
let accountsChanged: Connector["onAccountsChanged"] | undefined;
|
|
100
|
+
let chainChanged: Connector["onChainChanged"] | undefined;
|
|
101
|
+
let connect: Connector["onConnect"] | undefined;
|
|
102
|
+
let displayUri: ((uri: string) => void) | undefined;
|
|
103
|
+
let disconnect: Connector["onDisconnect"] | undefined;
|
|
104
|
+
|
|
105
|
+
return createConnector<Provider, Properties>((config) => ({
|
|
106
|
+
id: "metaMaskSDK",
|
|
107
|
+
name: "MetaMask",
|
|
108
|
+
rdns: ["io.metamask", "io.metamask.mobile"],
|
|
109
|
+
type: metaMaskSdk.type,
|
|
110
|
+
async setup() {
|
|
111
|
+
const provider = await this.getProvider();
|
|
112
|
+
if (provider?.on) {
|
|
113
|
+
if (!connect) {
|
|
114
|
+
connect = this.onConnect.bind(this);
|
|
115
|
+
provider.on("connect", connect as Listener);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Some wallets, like MetaMask, do not implement the `'connect'` event and
|
|
119
|
+
// overload `'accountsChanged'` instead.
|
|
120
|
+
if (!accountsChanged) {
|
|
121
|
+
accountsChanged = this.onAccountsChanged.bind(this);
|
|
122
|
+
provider.on("accountsChanged", accountsChanged as Listener);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
async connect({ chainId, isReconnecting, withCapabilities } = {}) {
|
|
127
|
+
const provider = await this.getProvider();
|
|
128
|
+
if (!displayUri) {
|
|
129
|
+
displayUri = this.onDisplayUri;
|
|
130
|
+
provider.on("display_uri", displayUri as Listener);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
let accounts: readonly Address[] = [];
|
|
134
|
+
if (isReconnecting) accounts = await this.getAccounts().catch(() => []);
|
|
135
|
+
|
|
136
|
+
try {
|
|
137
|
+
let signResponse: string | undefined;
|
|
138
|
+
let connectWithResponse: unknown | undefined;
|
|
139
|
+
if (!accounts?.length) {
|
|
140
|
+
if (parameters.connectAndSign || parameters.connectWith) {
|
|
141
|
+
if (parameters.connectAndSign)
|
|
142
|
+
signResponse = await sdk.connectAndSign({
|
|
143
|
+
msg: parameters.connectAndSign,
|
|
144
|
+
});
|
|
145
|
+
else if (parameters.connectWith)
|
|
146
|
+
connectWithResponse = await sdk.connectWith({
|
|
147
|
+
method: parameters.connectWith.method,
|
|
148
|
+
params: parameters.connectWith.params,
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
accounts = await this.getAccounts();
|
|
152
|
+
} else {
|
|
153
|
+
const requestedAccounts = (await sdk.connect()) as string[];
|
|
154
|
+
accounts = requestedAccounts.map((x) => getAddress(x));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Switch to chain if provided
|
|
158
|
+
let currentChainId = (await this.getChainId()) as number;
|
|
159
|
+
if (chainId && currentChainId !== chainId) {
|
|
160
|
+
const chain = await this.switchChain!({ chainId }).catch((error) => {
|
|
161
|
+
if (error.code === UserRejectedRequestError.code) throw error;
|
|
162
|
+
return { id: currentChainId };
|
|
163
|
+
});
|
|
164
|
+
currentChainId = chain?.id ?? currentChainId;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (displayUri) {
|
|
168
|
+
provider.removeListener("display_uri", displayUri);
|
|
169
|
+
displayUri = undefined;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (signResponse)
|
|
173
|
+
provider.emit("connectAndSign", {
|
|
174
|
+
accounts,
|
|
175
|
+
chainId: currentChainId,
|
|
176
|
+
signResponse,
|
|
177
|
+
});
|
|
178
|
+
else if (connectWithResponse)
|
|
179
|
+
provider.emit("connectWith", {
|
|
180
|
+
accounts,
|
|
181
|
+
chainId: currentChainId,
|
|
182
|
+
connectWithResponse,
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
// Manage EIP-1193 event listeners
|
|
186
|
+
// https://eips.ethereum.org/EIPS/eip-1193#events
|
|
187
|
+
if (connect) {
|
|
188
|
+
provider.removeListener("connect", connect);
|
|
189
|
+
connect = undefined;
|
|
190
|
+
}
|
|
191
|
+
if (!accountsChanged) {
|
|
192
|
+
accountsChanged = this.onAccountsChanged.bind(this);
|
|
193
|
+
provider.on("accountsChanged", accountsChanged as Listener);
|
|
194
|
+
}
|
|
195
|
+
if (!chainChanged) {
|
|
196
|
+
chainChanged = this.onChainChanged.bind(this);
|
|
197
|
+
provider.on("chainChanged", chainChanged as Listener);
|
|
198
|
+
}
|
|
199
|
+
if (!disconnect) {
|
|
200
|
+
disconnect = this.onDisconnect.bind(this);
|
|
201
|
+
provider.on("disconnect", disconnect as Listener);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
return {
|
|
205
|
+
accounts: (withCapabilities
|
|
206
|
+
? accounts.map((address) => ({ address, capabilities: {} }))
|
|
207
|
+
: accounts) as never,
|
|
208
|
+
chainId: currentChainId,
|
|
209
|
+
};
|
|
210
|
+
} catch (err) {
|
|
211
|
+
const error = err as RpcError;
|
|
212
|
+
if (error.code === UserRejectedRequestError.code) throw new UserRejectedRequestError(error);
|
|
213
|
+
if (error.code === ResourceUnavailableRpcError.code)
|
|
214
|
+
throw new ResourceUnavailableRpcError(error);
|
|
215
|
+
throw error;
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
async disconnect() {
|
|
219
|
+
const provider = await this.getProvider();
|
|
220
|
+
|
|
221
|
+
// Manage EIP-1193 event listeners
|
|
222
|
+
if (chainChanged) {
|
|
223
|
+
provider.removeListener("chainChanged", chainChanged);
|
|
224
|
+
chainChanged = undefined;
|
|
225
|
+
}
|
|
226
|
+
if (disconnect) {
|
|
227
|
+
provider.removeListener("disconnect", disconnect);
|
|
228
|
+
disconnect = undefined;
|
|
229
|
+
}
|
|
230
|
+
if (!connect) {
|
|
231
|
+
connect = this.onConnect.bind(this);
|
|
232
|
+
provider.on("connect", connect as Listener);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
await sdk.terminate();
|
|
236
|
+
},
|
|
237
|
+
async getAccounts() {
|
|
238
|
+
const provider = await this.getProvider();
|
|
239
|
+
const accounts = (await provider.request({
|
|
240
|
+
method: "eth_accounts",
|
|
241
|
+
})) as string[];
|
|
242
|
+
return accounts.map((x) => getAddress(x));
|
|
243
|
+
},
|
|
244
|
+
async getChainId() {
|
|
245
|
+
const provider = await this.getProvider();
|
|
246
|
+
const chainId = provider.getChainId() || (await provider?.request({ method: "eth_chainId" }));
|
|
247
|
+
return Number(chainId);
|
|
248
|
+
},
|
|
249
|
+
async getProvider() {
|
|
250
|
+
async function initProvider() {
|
|
251
|
+
// Unwrapping import for Vite compatibility.
|
|
252
|
+
// See: https://github.com/vitejs/vite/issues/9703
|
|
253
|
+
const MetaMaskSDK = await (async () => {
|
|
254
|
+
const { default: SDK } = (await import("@metamask/sdk")) as any; // CJS/ESM interop unwrap
|
|
255
|
+
if (typeof SDK !== "function" && typeof SDK.default === "function")
|
|
256
|
+
return SDK.default as typeof import("@metamask/sdk").MetaMaskSDK;
|
|
257
|
+
return SDK as typeof import("@metamask/sdk").MetaMaskSDK;
|
|
258
|
+
})();
|
|
259
|
+
|
|
260
|
+
const readonlyRPCMap: RPC_URLS_MAP = {};
|
|
261
|
+
for (const chain of config.chains)
|
|
262
|
+
readonlyRPCMap[numberToHex(chain.id)] = extractRpcUrls({
|
|
263
|
+
chain,
|
|
264
|
+
transports: config.transports,
|
|
265
|
+
})?.[0];
|
|
266
|
+
|
|
267
|
+
sdk = new MetaMaskSDK({
|
|
268
|
+
_source: "wagmi",
|
|
269
|
+
forceDeleteProvider: false,
|
|
270
|
+
forceInjectProvider: false,
|
|
271
|
+
injectProvider: false,
|
|
272
|
+
// Workaround cast since MetaMask SDK does not support `'exactOptionalPropertyTypes'`
|
|
273
|
+
...(parameters as RemoveUndefined<typeof parameters>),
|
|
274
|
+
readonlyRPCMap,
|
|
275
|
+
dappMetadata: {
|
|
276
|
+
...parameters.dappMetadata,
|
|
277
|
+
name: parameters.dappMetadata?.name ? parameters.dappMetadata?.name : "wagmi",
|
|
278
|
+
url: parameters.dappMetadata?.url
|
|
279
|
+
? parameters.dappMetadata?.url
|
|
280
|
+
: typeof window !== "undefined"
|
|
281
|
+
? window.location.origin
|
|
282
|
+
: "https://wagmi.sh",
|
|
283
|
+
},
|
|
284
|
+
useDeeplink: parameters.useDeeplink ?? true,
|
|
285
|
+
});
|
|
286
|
+
const result = await sdk.init();
|
|
287
|
+
// On initial load, sometimes `sdk.getProvider` does not return provider.
|
|
288
|
+
// https://github.com/wevm/wagmi/issues/4367
|
|
289
|
+
const provider = (() => {
|
|
290
|
+
if (result?.activeProvider) return result.activeProvider;
|
|
291
|
+
return sdk.getProvider();
|
|
292
|
+
})();
|
|
293
|
+
if (!provider) throw new ProviderNotFoundError();
|
|
294
|
+
return provider;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
if (!provider) {
|
|
298
|
+
if (!providerPromise) providerPromise = initProvider();
|
|
299
|
+
provider = await providerPromise;
|
|
300
|
+
}
|
|
301
|
+
return provider!;
|
|
302
|
+
},
|
|
303
|
+
async isAuthorized() {
|
|
304
|
+
try {
|
|
305
|
+
// MetaMask mobile provider sometimes fails to immediately resolve
|
|
306
|
+
// JSON-RPC requests on page load
|
|
307
|
+
const timeout = 200;
|
|
308
|
+
const accounts = await withRetry(() => withTimeout(() => this.getAccounts(), { timeout }), {
|
|
309
|
+
delay: timeout + 1,
|
|
310
|
+
retryCount: 3,
|
|
311
|
+
});
|
|
312
|
+
return !!accounts.length;
|
|
313
|
+
} catch {
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
},
|
|
317
|
+
async switchChain({ addEthereumChainParameter, chainId }) {
|
|
318
|
+
const provider = await this.getProvider();
|
|
319
|
+
|
|
320
|
+
const chain = config.chains.find((x) => x.id === chainId);
|
|
321
|
+
if (!chain) throw new SwitchChainError(new ChainNotConfiguredError());
|
|
322
|
+
|
|
323
|
+
try {
|
|
324
|
+
await provider.request({
|
|
325
|
+
method: "wallet_switchEthereumChain",
|
|
326
|
+
params: [{ chainId: numberToHex(chainId) }],
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
// During `'wallet_switchEthereumChain'`, MetaMask makes a `'net_version'` RPC
|
|
330
|
+
// call to the target chain. If this request fails, MetaMask does not emit the
|
|
331
|
+
// `'chainChanged'` event, but will still switch the chain.
|
|
332
|
+
// https://github.com/MetaMask/metamask-extension/issues/24247
|
|
333
|
+
await waitForChainIdToSync();
|
|
334
|
+
await sendAndWaitForChangeEvent(chainId);
|
|
335
|
+
|
|
336
|
+
return chain;
|
|
337
|
+
} catch (err) {
|
|
338
|
+
const error = err as RpcError;
|
|
339
|
+
|
|
340
|
+
if (error.code === UserRejectedRequestError.code) throw new UserRejectedRequestError(error);
|
|
341
|
+
|
|
342
|
+
// Indicates chain is not added to provider
|
|
343
|
+
if (
|
|
344
|
+
error.code === 4902 ||
|
|
345
|
+
// Unwrapping for MetaMask Mobile
|
|
346
|
+
// https://github.com/MetaMask/metamask-mobile/issues/2944#issuecomment-976988719
|
|
347
|
+
(error as ProviderRpcError<{ originalError?: { code: number } }>)?.data?.originalError
|
|
348
|
+
?.code === 4902
|
|
349
|
+
) {
|
|
350
|
+
try {
|
|
351
|
+
await provider.request({
|
|
352
|
+
method: "wallet_addEthereumChain",
|
|
353
|
+
params: [
|
|
354
|
+
{
|
|
355
|
+
blockExplorerUrls: (() => {
|
|
356
|
+
const { default: blockExplorer, ...blockExplorers } =
|
|
357
|
+
chain.blockExplorers ?? {};
|
|
358
|
+
if (addEthereumChainParameter?.blockExplorerUrls)
|
|
359
|
+
return addEthereumChainParameter.blockExplorerUrls;
|
|
360
|
+
if (blockExplorer)
|
|
361
|
+
return [
|
|
362
|
+
blockExplorer.url,
|
|
363
|
+
...Object.values(blockExplorers).map((x) => x.url),
|
|
364
|
+
];
|
|
365
|
+
return;
|
|
366
|
+
})(),
|
|
367
|
+
chainId: numberToHex(chainId),
|
|
368
|
+
chainName: addEthereumChainParameter?.chainName ?? chain.name,
|
|
369
|
+
iconUrls: addEthereumChainParameter?.iconUrls,
|
|
370
|
+
nativeCurrency: addEthereumChainParameter?.nativeCurrency ?? chain.nativeCurrency,
|
|
371
|
+
rpcUrls: (() => {
|
|
372
|
+
if (addEthereumChainParameter?.rpcUrls?.length)
|
|
373
|
+
return addEthereumChainParameter.rpcUrls;
|
|
374
|
+
return [chain.rpcUrls.default?.http[0] ?? ""];
|
|
375
|
+
})(),
|
|
376
|
+
} satisfies AddEthereumChainParameter,
|
|
377
|
+
],
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
await waitForChainIdToSync();
|
|
381
|
+
await sendAndWaitForChangeEvent(chainId);
|
|
382
|
+
|
|
383
|
+
return chain;
|
|
384
|
+
} catch (err) {
|
|
385
|
+
const error = err as RpcError;
|
|
386
|
+
if (error.code === UserRejectedRequestError.code)
|
|
387
|
+
throw new UserRejectedRequestError(error);
|
|
388
|
+
throw new SwitchChainError(error);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
throw new SwitchChainError(error);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
async function waitForChainIdToSync() {
|
|
396
|
+
// On mobile, there is a race condition between the result of
|
|
397
|
+
// `'wallet_addEthereumChain'` and `'eth_chainId'`, so retry until they agree.
|
|
398
|
+
await withRetry(
|
|
399
|
+
async () => {
|
|
400
|
+
const value = hexToNumber(
|
|
401
|
+
// `'eth_chainId'` is cached by the MetaMask SDK side to avoid unnecessary deeplinks
|
|
402
|
+
(await provider.request({ method: "eth_chainId" })) as Hex,
|
|
403
|
+
);
|
|
404
|
+
// `value` doesn't match expected `chainId`, throw to trigger retry
|
|
405
|
+
if (value !== chainId) throw new Error("User rejected switch after adding network.");
|
|
406
|
+
return value;
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
delay: 50,
|
|
410
|
+
retryCount: 20, // android device encryption is slower
|
|
411
|
+
},
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
async function sendAndWaitForChangeEvent(chainId: number) {
|
|
416
|
+
await new Promise<void>((resolve) => {
|
|
417
|
+
const listener = ((data) => {
|
|
418
|
+
if ("chainId" in data && data.chainId === chainId) {
|
|
419
|
+
config.emitter.off("change", listener);
|
|
420
|
+
resolve();
|
|
421
|
+
}
|
|
422
|
+
}) satisfies Parameters<typeof config.emitter.on>[1];
|
|
423
|
+
config.emitter.on("change", listener);
|
|
424
|
+
config.emitter.emit("change", { chainId });
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
},
|
|
428
|
+
async onAccountsChanged(accounts) {
|
|
429
|
+
// Disconnect if there are no accounts
|
|
430
|
+
if (accounts.length === 0) {
|
|
431
|
+
// ... and using browser extension
|
|
432
|
+
if (sdk.isExtensionActive()) this.onDisconnect();
|
|
433
|
+
// FIXME(upstream): Mobile app sometimes emits invalid `accountsChanged` event with empty accounts array
|
|
434
|
+
else return;
|
|
435
|
+
}
|
|
436
|
+
// Connect if emitter is listening for connect event (e.g. is disconnected and connects through wallet interface)
|
|
437
|
+
else if (config.emitter.listenerCount("connect")) {
|
|
438
|
+
const chainId = (await this.getChainId()).toString();
|
|
439
|
+
this.onConnect({ chainId });
|
|
440
|
+
}
|
|
441
|
+
// Regular change event
|
|
442
|
+
else
|
|
443
|
+
config.emitter.emit("change", {
|
|
444
|
+
accounts: accounts.map((x) => getAddress(x)),
|
|
445
|
+
});
|
|
446
|
+
},
|
|
447
|
+
onChainChanged(chain) {
|
|
448
|
+
const chainId = Number(chain);
|
|
449
|
+
config.emitter.emit("change", { chainId });
|
|
450
|
+
},
|
|
451
|
+
async onConnect(connectInfo) {
|
|
452
|
+
const accounts = await this.getAccounts();
|
|
453
|
+
if (accounts.length === 0) return;
|
|
454
|
+
|
|
455
|
+
const chainId = Number(connectInfo.chainId);
|
|
456
|
+
config.emitter.emit("connect", { accounts, chainId });
|
|
457
|
+
|
|
458
|
+
const provider = await this.getProvider();
|
|
459
|
+
if (connect) {
|
|
460
|
+
provider.removeListener("connect", connect);
|
|
461
|
+
connect = undefined;
|
|
462
|
+
}
|
|
463
|
+
if (!accountsChanged) {
|
|
464
|
+
accountsChanged = this.onAccountsChanged.bind(this);
|
|
465
|
+
provider.on("accountsChanged", accountsChanged as Listener);
|
|
466
|
+
}
|
|
467
|
+
if (!chainChanged) {
|
|
468
|
+
chainChanged = this.onChainChanged.bind(this);
|
|
469
|
+
provider.on("chainChanged", chainChanged as Listener);
|
|
470
|
+
}
|
|
471
|
+
if (!disconnect) {
|
|
472
|
+
disconnect = this.onDisconnect.bind(this);
|
|
473
|
+
provider.on("disconnect", disconnect as Listener);
|
|
474
|
+
}
|
|
475
|
+
},
|
|
476
|
+
async onDisconnect(error) {
|
|
477
|
+
const provider = await this.getProvider();
|
|
478
|
+
|
|
479
|
+
// If MetaMask emits a `code: 1013` error, wait for reconnection before disconnecting
|
|
480
|
+
// https://github.com/MetaMask/providers/pull/120
|
|
481
|
+
if (error && (error as RpcError<1013>).code === 1013) {
|
|
482
|
+
if (provider && !!(await this.getAccounts()).length) return;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
config.emitter.emit("disconnect");
|
|
486
|
+
|
|
487
|
+
// Manage EIP-1193 event listeners
|
|
488
|
+
if (chainChanged) {
|
|
489
|
+
provider.removeListener("chainChanged", chainChanged);
|
|
490
|
+
chainChanged = undefined;
|
|
491
|
+
}
|
|
492
|
+
if (disconnect) {
|
|
493
|
+
provider.removeListener("disconnect", disconnect);
|
|
494
|
+
disconnect = undefined;
|
|
495
|
+
}
|
|
496
|
+
if (!connect) {
|
|
497
|
+
connect = this.onConnect.bind(this);
|
|
498
|
+
provider.on("connect", connect as Listener);
|
|
499
|
+
}
|
|
500
|
+
},
|
|
501
|
+
onDisplayUri(uri) {
|
|
502
|
+
config.emitter.emit("message", { type: "display_uri", data: uri });
|
|
503
|
+
},
|
|
504
|
+
}));
|
|
505
|
+
}
|
|
@@ -29,11 +29,21 @@ export const ecosystemBySyntheticChainId: Record<number, Ecosystem> = {
|
|
|
29
29
|
export const isSyntheticChainId = (chainId?: number): boolean =>
|
|
30
30
|
chainId != null && chainId in ecosystemBySyntheticChainId;
|
|
31
31
|
|
|
32
|
+
// wagmi's metaMask connector maps EVERY chain in the config into the MetaMask
|
|
33
|
+
// SDK's `supportedNetworks` as `chain.rpcUrls.default.http[0] ?? ""`, and
|
|
34
|
+
// @metamask/connect-evm validates each entry with `new URL(...)`. An empty rpc
|
|
35
|
+
// list therefore threw "supportedNetworks contains invalid URLs" during
|
|
36
|
+
// createEVMClient, which killed connect() before it emitted `display_uri` — the
|
|
37
|
+
// deeplink event the mobile "Open <wallet>" button needs — so MetaMask never
|
|
38
|
+
// opened on any platform. A syntactically valid URL satisfies that check. `.invalid`
|
|
39
|
+
// is reserved by RFC 2606 and never resolves, so nothing can accidentally dial it.
|
|
40
|
+
const placeholderRpcUrl = "https://siww.invalid/";
|
|
41
|
+
|
|
32
42
|
const makeChain = (id: number, name: string, symbol: string, decimals: number): Chain => ({
|
|
33
43
|
id,
|
|
34
44
|
name,
|
|
35
45
|
nativeCurrency: { name, symbol, decimals },
|
|
36
|
-
rpcUrls: { default: { http: [] } },
|
|
46
|
+
rpcUrls: { default: { http: [placeholderRpcUrl] } },
|
|
37
47
|
});
|
|
38
48
|
|
|
39
49
|
export const solanaChain = makeChain(SOLANA_CHAIN_ID, "Solana", "SOL", 9);
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { CreateConnectorFn } from "wagmi";
|
|
2
|
+
import { walletConnect, coinbaseWallet, CoinbaseWalletParameters, safe } from "@wagmi/connectors";
|
|
3
|
+
import { metaMaskSdk } from "./connectors/metaMaskSdkConnector";
|
|
2
4
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
CoinbaseWalletParameters,
|
|
7
|
-
safe,
|
|
8
|
-
} from "@wagmi/connectors";
|
|
5
|
+
isEmbeddedDesktopWebview,
|
|
6
|
+
metaMaskOptionsForEmbeddedDesktop,
|
|
7
|
+
} from "./connectors/embeddedDesktop";
|
|
9
8
|
|
|
10
9
|
import { EthereumProviderOptions as AaveAccountOptions, aaveAccountConnector } from "@aave/account";
|
|
11
10
|
|
|
@@ -47,7 +46,28 @@ const defaultConnectors = ({
|
|
|
47
46
|
|
|
48
47
|
// Add the rest of the connectors
|
|
49
48
|
connectors.push(
|
|
50
|
-
|
|
49
|
+
// MetaMask rides its OWN SDK (id `metaMaskSDK`) — never WalletConnect.
|
|
50
|
+
// This is the CLASSIC @metamask/sdk connector (see metaMaskSdkConnector.ts for
|
|
51
|
+
// why not @wagmi/connectors' MWP-based one): mobile browser = deeplink over the
|
|
52
|
+
// SDK's persistent socket.io relay, which survives the tab being frozen or
|
|
53
|
+
// discarded during the wallet bounce; desktop = extension; MetaMask in-app
|
|
54
|
+
// browser = injected; desktop without the extension = the SDK's own QR/install
|
|
55
|
+
// modal (ConnectKit's QR page is WalletConnect-only, so let the SDK render it).
|
|
56
|
+
//
|
|
57
|
+
// Tauri/WebView2/WKWebView: no extension injection. SDK InstallModal custom
|
|
58
|
+
// elements + `location.href = metamask://` are hostile there — use headless
|
|
59
|
+
// remote connect and let ConnectKit render the display_uri QR instead.
|
|
60
|
+
// Mobile options are untouched (useDeeplink stays default true).
|
|
61
|
+
metaMaskSdk({
|
|
62
|
+
dappMetadata: {
|
|
63
|
+
name: app.name,
|
|
64
|
+
url: app.url,
|
|
65
|
+
iconUrl: app.icon,
|
|
66
|
+
},
|
|
67
|
+
enableAnalytics: false,
|
|
68
|
+
checkInstallationImmediately: false,
|
|
69
|
+
...(isEmbeddedDesktopWebview() ? metaMaskOptionsForEmbeddedDesktop() : {}),
|
|
70
|
+
}),
|
|
51
71
|
coinbaseWallet({
|
|
52
72
|
appName: app.name,
|
|
53
73
|
appLogoUrl: app.icon,
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Records that the user started a connect FROM the modal and therefore means to
|
|
3
|
+
* continue into the sign-in step.
|
|
4
|
+
*
|
|
5
|
+
* Why this can't be React state or a ref: on mobile, connecting bounces out to the
|
|
6
|
+
* wallet app (MetaMask's deeplink) and back, which remounts — often fully reloads —
|
|
7
|
+
* the dapp page. Everything in memory is gone, and the modal comes back closed. When
|
|
8
|
+
* wagmi then rehydrates the connection, `isConnected` flips to true with the modal
|
|
9
|
+
* shut, so web3Bridge would route to the sign-in screen without anything on screen —
|
|
10
|
+
* the user has to press connect a second time just to reach the signature prompt.
|
|
11
|
+
*
|
|
12
|
+
* sessionStorage survives that reload (same tab), so the intent does too.
|
|
13
|
+
*
|
|
14
|
+
* It is deliberately an INTENT flag rather than "reopen whenever connected": a cold
|
|
15
|
+
* page load with a wallet already connected must NOT pop a modal the user never asked
|
|
16
|
+
* for. Only a connect the user just initiated carries the intent, and it's consumed
|
|
17
|
+
* once acted on.
|
|
18
|
+
*/
|
|
19
|
+
const KEY = "siww:connect-intent";
|
|
20
|
+
|
|
21
|
+
export function setConnectIntent() {
|
|
22
|
+
if (typeof window === "undefined") return;
|
|
23
|
+
try {
|
|
24
|
+
window.sessionStorage.setItem(KEY, "1");
|
|
25
|
+
} catch {
|
|
26
|
+
// Private mode / storage disabled — degrade to the old behaviour, don't throw.
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Reads and clears the flag; true only for a connect the user just initiated. */
|
|
31
|
+
export function consumeConnectIntent(): boolean {
|
|
32
|
+
if (typeof window === "undefined") return false;
|
|
33
|
+
try {
|
|
34
|
+
const had = window.sessionStorage.getItem(KEY) !== null;
|
|
35
|
+
window.sessionStorage.removeItem(KEY);
|
|
36
|
+
return had;
|
|
37
|
+
} catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function clearConnectIntent() {
|
|
43
|
+
if (typeof window === "undefined") return;
|
|
44
|
+
try {
|
|
45
|
+
window.sessionStorage.removeItem(KEY);
|
|
46
|
+
} catch {
|
|
47
|
+
// ignore
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -6,6 +6,7 @@ import { useContext } from "@multiplatform.one/connectkit";
|
|
|
6
6
|
import {
|
|
7
7
|
isCoinbaseWalletConnector,
|
|
8
8
|
isInjectedConnector,
|
|
9
|
+
isMetaMaskConnector,
|
|
9
10
|
getConnectorEcosystem,
|
|
10
11
|
type Ecosystem,
|
|
11
12
|
} from "@multiplatform.one/connectkit";
|
|
@@ -50,6 +51,7 @@ export const useWallets = (): WalletProps[] => {
|
|
|
50
51
|
connector.type === "mock" ||
|
|
51
52
|
connector.type === "siww" || // siww wallets are only listed when detected present
|
|
52
53
|
(connector.type === "injected" && connector.id !== "metaMask") ||
|
|
54
|
+
isMetaMaskConnector(connector.id) || // always run the MetaMask SDK (extension, mobile deeplink, or SDK modal)
|
|
53
55
|
isCoinbaseWalletConnector(connector.id), // always run coinbase wallet SDK
|
|
54
56
|
};
|
|
55
57
|
|