@multiplatform.one/web3 7.26.0 → 7.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +157 -8
- package/dist/cjs/bridge/base58.cjs +48 -0
- package/dist/cjs/bridge/base58.native.js +51 -0
- package/dist/cjs/bridge/base58.native.js.map +1 -0
- package/dist/cjs/bridge/core.cjs +5 -1
- package/dist/cjs/bridge/core.native.js +5 -1
- package/dist/cjs/bridge/core.native.js.map +1 -1
- package/dist/cjs/bridge/drivers.cjs +141 -0
- package/dist/cjs/bridge/drivers.native.js +161 -0
- package/dist/cjs/bridge/drivers.native.js.map +1 -0
- package/dist/cjs/bridge/nativeHost.cjs +49 -9
- package/dist/cjs/bridge/nativeHost.native.js +56 -9
- package/dist/cjs/bridge/nativeHost.native.js.map +1 -1
- package/dist/cjs/clients/adapter.native.js.map +1 -1
- package/dist/cjs/clients/connector.native.js.map +1 -1
- package/dist/cjs/clients/evm.cjs +1 -0
- package/dist/cjs/clients/evm.native.js +1 -0
- package/dist/cjs/clients/evm.native.js.map +1 -1
- package/dist/cjs/clients/evmRead.cjs +104 -0
- package/dist/cjs/clients/evmRead.native.js +124 -0
- package/dist/cjs/clients/evmRead.native.js.map +1 -0
- package/dist/cjs/clients/hooks.cjs +37 -7
- package/dist/cjs/clients/hooks.native.js +43 -5
- package/dist/cjs/clients/hooks.native.js.map +1 -1
- package/dist/cjs/clients/index.cjs +5 -0
- package/dist/cjs/clients/index.native.js +5 -0
- package/dist/cjs/clients/index.native.js.map +1 -1
- package/dist/cjs/clients/types.cjs +7 -0
- package/dist/cjs/clients/types.native.js +14 -0
- package/dist/cjs/clients/types.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/BitcoinAdapter.cjs +44 -2
- package/dist/cjs/connectkit/adapters/BitcoinAdapter.native.js +73 -5
- package/dist/cjs/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/SolanaAdapter.cjs +46 -0
- package/dist/cjs/connectkit/adapters/SolanaAdapter.native.js +55 -0
- package/dist/cjs/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/SuiAdapter.cjs +40 -0
- package/dist/cjs/connectkit/adapters/SuiAdapter.native.js +50 -0
- package/dist/cjs/connectkit/adapters/SuiAdapter.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/ensureWalletConnectors.cjs +4 -1
- package/dist/cjs/connectkit/connectors/ensureWalletConnectors.native.js +8 -1
- package/dist/cjs/connectkit/connectors/ensureWalletConnectors.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/getWalletConnectors.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/syntheticChains.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/walletAdapterConnector.native.js.map +1 -1
- package/dist/cjs/connectkit/defaultConfig.cjs +5 -2
- package/dist/cjs/connectkit/defaultConfig.native.js +9 -2
- package/dist/cjs/connectkit/defaultConfig.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/SIWEContext.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/SIWEProvider.cjs +6 -4
- package/dist/cjs/connectkit/siwe/SIWEProvider.native.js +8 -4
- package/dist/cjs/connectkit/siwe/SIWEProvider.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/connectIntent.cjs +56 -16
- package/dist/cjs/connectkit/siwe/connectIntent.native.js +100 -16
- package/dist/cjs/connectkit/siwe/connectIntent.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/useSIWE.native.js.map +1 -1
- package/dist/cjs/connectkit/web3Bridge.cjs +58 -12
- package/dist/cjs/connectkit/web3Bridge.native.js +64 -14
- package/dist/cjs/connectkit/web3Bridge.native.js.map +1 -1
- package/dist/cjs/core/family.cjs +17 -0
- package/dist/cjs/core/family.native.js +17 -0
- package/dist/cjs/core/family.native.js.map +1 -1
- package/dist/cjs/core/index.cjs +10 -1
- package/dist/cjs/core/index.native.js +10 -1
- package/dist/cjs/core/index.native.js.map +1 -1
- package/dist/cjs/core/lightDriver.cjs +182 -0
- package/dist/cjs/core/lightDriver.native.js +260 -0
- package/dist/cjs/core/lightDriver.native.js.map +1 -0
- package/dist/cjs/core/react.cjs +12 -1
- package/dist/cjs/core/react.native.js +16 -1
- package/dist/cjs/core/react.native.js.map +1 -1
- package/dist/cjs/core/signIn.cjs +201 -0
- package/dist/cjs/core/signIn.native.js +240 -0
- package/dist/cjs/core/signIn.native.js.map +1 -0
- package/dist/cjs/core/store.cjs +47 -2
- package/dist/cjs/core/store.native.js +49 -2
- package/dist/cjs/core/store.native.js.map +1 -1
- package/dist/cjs/families/btc.cjs +44 -0
- package/dist/cjs/families/btc.native.js +49 -0
- package/dist/cjs/families/btc.native.js.map +1 -0
- package/dist/cjs/families/eth.cjs +57 -0
- package/dist/cjs/families/eth.native.js +61 -0
- package/dist/cjs/families/eth.native.js.map +1 -0
- package/dist/cjs/families/gpg.cjs +40 -0
- package/dist/cjs/families/gpg.native.js +43 -0
- package/dist/cjs/families/gpg.native.js.map +1 -0
- package/dist/cjs/families/host.cjs +38 -0
- package/dist/cjs/families/host.native.js +41 -0
- package/dist/cjs/families/host.native.js.map +1 -0
- package/dist/cjs/families/index.cjs +53 -0
- package/dist/cjs/families/index.native.js +56 -0
- package/dist/cjs/families/index.native.js.map +1 -0
- package/dist/cjs/families/messages.cjs +61 -0
- package/dist/cjs/families/messages.native.js +66 -0
- package/dist/cjs/families/messages.native.js.map +1 -0
- package/dist/cjs/families/sol.cjs +55 -0
- package/dist/cjs/families/sol.native.js +64 -0
- package/dist/cjs/families/sol.native.js.map +1 -0
- package/dist/cjs/families/sui.cjs +48 -0
- package/dist/cjs/families/sui.native.js +53 -0
- package/dist/cjs/families/sui.native.js.map +1 -0
- package/dist/cjs/index.cjs +22 -2
- package/dist/cjs/index.native.js +21 -1
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/keycloak/keycloakWallet.cjs +13 -0
- package/dist/cjs/keycloak/keycloakWallet.native.js +15 -0
- package/dist/cjs/keycloak/keycloakWallet.native.js.map +1 -1
- package/dist/cjs/keycloak/useDirectLogin.cjs +10 -5
- package/dist/cjs/keycloak/useDirectLogin.native.js +12 -5
- package/dist/cjs/keycloak/useDirectLogin.native.js.map +1 -1
- package/dist/cjs/keycloak/useWalletLogin.cjs +16 -8
- package/dist/cjs/light/drivers.cjs +73 -0
- package/dist/cjs/light/drivers.native.js +97 -0
- package/dist/cjs/light/drivers.native.js.map +1 -0
- package/dist/cjs/light/index.cjs +30 -0
- package/dist/cjs/light/index.native.js +33 -0
- package/dist/cjs/light/index.native.js.map +1 -0
- package/dist/cjs/providers/WalletProvider.cjs +59 -17
- package/dist/cjs/providers/WalletProvider.native.js +99 -56
- package/dist/cjs/providers/WalletProvider.native.js.map +1 -1
- package/dist/cjs/providers/families.cjs +53 -0
- package/dist/cjs/providers/families.native.js +59 -0
- package/dist/cjs/providers/families.native.js.map +1 -0
- package/dist/cjs/providers/index.cjs +1 -0
- package/dist/cjs/providers/index.native.js +1 -0
- package/dist/cjs/providers/index.native.js.map +1 -1
- package/dist/cjs/providers/walletConfig.cjs +41 -0
- package/dist/cjs/providers/walletConfig.native.js +68 -0
- package/dist/cjs/providers/walletConfig.native.js.map +1 -1
- package/dist/cjs/wagmi/driver.cjs +257 -0
- package/dist/cjs/wagmi/driver.native.js +331 -0
- package/dist/cjs/wagmi/driver.native.js.map +1 -0
- package/dist/cjs/wagmi/host.cjs +239 -0
- package/dist/cjs/wagmi/host.native.js +320 -0
- package/dist/cjs/wagmi/host.native.js.map +1 -0
- package/dist/cjs/wagmi/index.cjs +28 -0
- package/dist/cjs/wagmi/index.native.js +31 -0
- package/dist/cjs/wagmi/index.native.js.map +1 -0
- package/dist/cjs/web.cjs +84 -0
- package/dist/esm/bridge/base58.mjs +23 -0
- package/dist/esm/bridge/base58.mjs.map +1 -0
- package/dist/esm/bridge/base58.native.js +23 -0
- package/dist/esm/bridge/base58.native.js.map +1 -0
- package/dist/esm/bridge/core.mjs +3 -2
- package/dist/esm/bridge/core.mjs.map +1 -1
- package/dist/esm/bridge/core.native.js +3 -2
- package/dist/esm/bridge/core.native.js.map +1 -1
- package/dist/esm/bridge/drivers.mjs +113 -0
- package/dist/esm/bridge/drivers.mjs.map +1 -0
- package/dist/esm/bridge/drivers.native.js +130 -0
- package/dist/esm/bridge/drivers.native.js.map +1 -0
- package/dist/esm/bridge/nativeHost.mjs +50 -11
- package/dist/esm/bridge/nativeHost.mjs.map +1 -1
- package/dist/esm/bridge/nativeHost.native.js +57 -11
- package/dist/esm/bridge/nativeHost.native.js.map +1 -1
- package/dist/esm/clients/adapter.mjs.map +1 -1
- package/dist/esm/clients/adapter.native.js.map +1 -1
- package/dist/esm/clients/connector.mjs.map +1 -1
- package/dist/esm/clients/connector.native.js.map +1 -1
- package/dist/esm/clients/evm.mjs +1 -0
- package/dist/esm/clients/evm.mjs.map +1 -1
- package/dist/esm/clients/evm.native.js +1 -0
- package/dist/esm/clients/evm.native.js.map +1 -1
- package/dist/esm/clients/evmRead.mjs +78 -0
- package/dist/esm/clients/evmRead.mjs.map +1 -0
- package/dist/esm/clients/evmRead.native.js +95 -0
- package/dist/esm/clients/evmRead.native.js.map +1 -0
- package/dist/esm/clients/hooks.mjs +38 -9
- package/dist/esm/clients/hooks.mjs.map +1 -1
- package/dist/esm/clients/hooks.native.js +44 -7
- package/dist/esm/clients/hooks.native.js.map +1 -1
- package/dist/esm/clients/index.mjs +4 -3
- package/dist/esm/clients/index.mjs.map +1 -1
- package/dist/esm/clients/index.native.js +4 -3
- package/dist/esm/clients/index.native.js.map +1 -1
- package/dist/esm/clients/types.mjs +7 -1
- package/dist/esm/clients/types.mjs.map +1 -1
- package/dist/esm/clients/types.native.js +14 -1
- package/dist/esm/clients/types.native.js.map +1 -1
- package/dist/esm/connectkit/adapters/BitcoinAdapter.mjs +44 -2
- package/dist/esm/connectkit/adapters/BitcoinAdapter.mjs.map +1 -1
- package/dist/esm/connectkit/adapters/BitcoinAdapter.native.js +73 -5
- package/dist/esm/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
- package/dist/esm/connectkit/adapters/SolanaAdapter.mjs +46 -0
- package/dist/esm/connectkit/adapters/SolanaAdapter.mjs.map +1 -1
- package/dist/esm/connectkit/adapters/SolanaAdapter.native.js +55 -0
- package/dist/esm/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
- package/dist/esm/connectkit/adapters/SuiAdapter.mjs +40 -0
- package/dist/esm/connectkit/adapters/SuiAdapter.mjs.map +1 -1
- package/dist/esm/connectkit/adapters/SuiAdapter.native.js +50 -0
- package/dist/esm/connectkit/adapters/SuiAdapter.native.js.map +1 -1
- package/dist/esm/connectkit/connectors/ensureWalletConnectors.mjs +4 -1
- package/dist/esm/connectkit/connectors/ensureWalletConnectors.mjs.map +1 -1
- package/dist/esm/connectkit/connectors/ensureWalletConnectors.native.js +8 -1
- package/dist/esm/connectkit/connectors/ensureWalletConnectors.native.js.map +1 -1
- package/dist/esm/connectkit/connectors/getWalletConnectors.mjs.map +1 -1
- package/dist/esm/connectkit/connectors/getWalletConnectors.native.js.map +1 -1
- package/dist/esm/connectkit/connectors/syntheticChains.mjs.map +1 -1
- package/dist/esm/connectkit/connectors/syntheticChains.native.js.map +1 -1
- package/dist/esm/connectkit/connectors/walletAdapterConnector.mjs.map +1 -1
- package/dist/esm/connectkit/connectors/walletAdapterConnector.native.js.map +1 -1
- package/dist/esm/connectkit/defaultConfig.mjs +6 -3
- package/dist/esm/connectkit/defaultConfig.mjs.map +1 -1
- package/dist/esm/connectkit/defaultConfig.native.js +10 -3
- package/dist/esm/connectkit/defaultConfig.native.js.map +1 -1
- package/dist/esm/connectkit/siwe/SIWEContext.mjs.map +1 -1
- package/dist/esm/connectkit/siwe/SIWEContext.native.js.map +1 -1
- package/dist/esm/connectkit/siwe/SIWEProvider.mjs +6 -4
- package/dist/esm/connectkit/siwe/SIWEProvider.mjs.map +1 -1
- package/dist/esm/connectkit/siwe/SIWEProvider.native.js +8 -4
- package/dist/esm/connectkit/siwe/SIWEProvider.native.js.map +1 -1
- package/dist/esm/connectkit/siwe/connectIntent.mjs +54 -16
- package/dist/esm/connectkit/siwe/connectIntent.mjs.map +1 -1
- package/dist/esm/connectkit/siwe/connectIntent.native.js +98 -16
- package/dist/esm/connectkit/siwe/connectIntent.native.js.map +1 -1
- package/dist/esm/connectkit/siwe/useSIWE.mjs.map +1 -1
- package/dist/esm/connectkit/siwe/useSIWE.native.js.map +1 -1
- package/dist/esm/connectkit/web3Bridge.mjs +61 -16
- package/dist/esm/connectkit/web3Bridge.mjs.map +1 -1
- package/dist/esm/connectkit/web3Bridge.native.js +67 -18
- package/dist/esm/connectkit/web3Bridge.native.js.map +1 -1
- package/dist/esm/core/family.mjs +17 -0
- package/dist/esm/core/family.mjs.map +1 -1
- package/dist/esm/core/family.native.js +17 -0
- package/dist/esm/core/family.native.js.map +1 -1
- package/dist/esm/core/index.mjs +5 -3
- package/dist/esm/core/index.mjs.map +1 -1
- package/dist/esm/core/index.native.js +5 -3
- package/dist/esm/core/index.native.js.map +1 -1
- package/dist/esm/core/lightDriver.mjs +157 -0
- package/dist/esm/core/lightDriver.mjs.map +1 -0
- package/dist/esm/core/lightDriver.native.js +232 -0
- package/dist/esm/core/lightDriver.native.js.map +1 -0
- package/dist/esm/core/react.mjs +10 -1
- package/dist/esm/core/react.mjs.map +1 -1
- package/dist/esm/core/react.native.js +14 -1
- package/dist/esm/core/react.native.js.map +1 -1
- package/dist/esm/core/signIn.mjs +173 -0
- package/dist/esm/core/signIn.mjs.map +1 -0
- package/dist/esm/core/signIn.native.js +209 -0
- package/dist/esm/core/signIn.native.js.map +1 -0
- package/dist/esm/core/store.mjs +47 -2
- package/dist/esm/core/store.mjs.map +1 -1
- package/dist/esm/core/store.native.js +49 -2
- package/dist/esm/core/store.native.js.map +1 -1
- package/dist/esm/families/btc.mjs +19 -0
- package/dist/esm/families/btc.mjs.map +1 -0
- package/dist/esm/families/btc.native.js +21 -0
- package/dist/esm/families/btc.native.js.map +1 -0
- package/dist/esm/families/eth.mjs +32 -0
- package/dist/esm/families/eth.mjs.map +1 -0
- package/dist/esm/families/eth.native.js +33 -0
- package/dist/esm/families/eth.native.js.map +1 -0
- package/dist/esm/families/gpg.mjs +15 -0
- package/dist/esm/families/gpg.mjs.map +1 -0
- package/dist/esm/families/gpg.native.js +15 -0
- package/dist/esm/families/gpg.native.js.map +1 -0
- package/dist/esm/families/host.mjs +12 -0
- package/dist/esm/families/host.mjs.map +1 -0
- package/dist/esm/families/host.native.js +12 -0
- package/dist/esm/families/host.native.js.map +1 -0
- package/dist/esm/families/index.mjs +23 -0
- package/dist/esm/families/index.mjs.map +1 -0
- package/dist/esm/families/index.native.js +23 -0
- package/dist/esm/families/index.native.js.map +1 -0
- package/dist/esm/families/messages.mjs +32 -0
- package/dist/esm/families/messages.mjs.map +1 -0
- package/dist/esm/families/messages.native.js +34 -0
- package/dist/esm/families/messages.native.js.map +1 -0
- package/dist/esm/families/sol.mjs +30 -0
- package/dist/esm/families/sol.mjs.map +1 -0
- package/dist/esm/families/sol.native.js +36 -0
- package/dist/esm/families/sol.native.js.map +1 -0
- package/dist/esm/families/sui.mjs +23 -0
- package/dist/esm/families/sui.mjs.map +1 -0
- package/dist/esm/families/sui.native.js +25 -0
- package/dist/esm/families/sui.native.js.map +1 -0
- package/dist/esm/index.mjs +6 -3
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +6 -3
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/keycloak/keycloakWallet.mjs +13 -0
- package/dist/esm/keycloak/keycloakWallet.mjs.map +1 -1
- package/dist/esm/keycloak/keycloakWallet.native.js +15 -0
- package/dist/esm/keycloak/keycloakWallet.native.js.map +1 -1
- package/dist/esm/keycloak/useDirectLogin.mjs +10 -5
- package/dist/esm/keycloak/useDirectLogin.mjs.map +1 -1
- package/dist/esm/keycloak/useDirectLogin.native.js +12 -5
- package/dist/esm/keycloak/useDirectLogin.native.js.map +1 -1
- package/dist/esm/keycloak/useWalletLogin.mjs +16 -8
- package/dist/esm/keycloak/useWalletLogin.mjs.map +1 -1
- package/dist/esm/light/drivers.mjs +46 -0
- package/dist/esm/light/drivers.mjs.map +1 -0
- package/dist/esm/light/drivers.native.js +67 -0
- package/dist/esm/light/drivers.native.js.map +1 -0
- package/dist/esm/light/index.mjs +3 -0
- package/dist/esm/light/index.mjs.map +1 -0
- package/dist/esm/light/index.native.js +3 -0
- package/dist/esm/light/index.native.js.map +1 -0
- package/dist/esm/providers/WalletProvider.mjs +60 -19
- package/dist/esm/providers/WalletProvider.mjs.map +1 -1
- package/dist/esm/providers/WalletProvider.native.js +101 -59
- package/dist/esm/providers/WalletProvider.native.js.map +1 -1
- package/dist/esm/providers/families.mjs +27 -0
- package/dist/esm/providers/families.mjs.map +1 -0
- package/dist/esm/providers/families.native.js +30 -0
- package/dist/esm/providers/families.native.js.map +1 -0
- package/dist/esm/providers/index.mjs +2 -2
- package/dist/esm/providers/index.mjs.map +1 -1
- package/dist/esm/providers/index.native.js +2 -2
- package/dist/esm/providers/index.native.js.map +1 -1
- package/dist/esm/providers/walletConfig.mjs +40 -1
- package/dist/esm/providers/walletConfig.mjs.map +1 -1
- package/dist/esm/providers/walletConfig.native.js +67 -1
- package/dist/esm/providers/walletConfig.native.js.map +1 -1
- package/dist/esm/wagmi/driver.mjs +232 -0
- package/dist/esm/wagmi/driver.mjs.map +1 -0
- package/dist/esm/wagmi/driver.native.js +303 -0
- package/dist/esm/wagmi/driver.native.js.map +1 -0
- package/dist/esm/wagmi/host.mjs +213 -0
- package/dist/esm/wagmi/host.mjs.map +1 -0
- package/dist/esm/wagmi/host.native.js +291 -0
- package/dist/esm/wagmi/host.native.js.map +1 -0
- package/dist/esm/wagmi/index.mjs +3 -0
- package/dist/esm/wagmi/index.mjs.map +1 -0
- package/dist/esm/wagmi/index.native.js +3 -0
- package/dist/esm/wagmi/index.native.js.map +1 -0
- package/dist/esm/web.mjs +13 -0
- package/dist/esm/web.mjs.map +1 -0
- package/dist/jsx/bridge/base58.mjs +23 -0
- package/dist/jsx/bridge/base58.mjs.map +1 -0
- package/dist/jsx/bridge/base58.native.js +51 -0
- package/dist/jsx/bridge/base58.native.js.map +1 -0
- package/dist/jsx/bridge/core.mjs +3 -2
- package/dist/jsx/bridge/core.mjs.map +1 -1
- package/dist/jsx/bridge/core.native.js +5 -1
- package/dist/jsx/bridge/core.native.js.map +1 -1
- package/dist/jsx/bridge/drivers.mjs +113 -0
- package/dist/jsx/bridge/drivers.mjs.map +1 -0
- package/dist/jsx/bridge/drivers.native.js +161 -0
- package/dist/jsx/bridge/drivers.native.js.map +1 -0
- package/dist/jsx/bridge/nativeHost.mjs +50 -11
- package/dist/jsx/bridge/nativeHost.mjs.map +1 -1
- package/dist/jsx/bridge/nativeHost.native.js +56 -9
- package/dist/jsx/bridge/nativeHost.native.js.map +1 -1
- package/dist/jsx/clients/adapter.mjs.map +1 -1
- package/dist/jsx/clients/adapter.native.js.map +1 -1
- package/dist/jsx/clients/connector.mjs.map +1 -1
- package/dist/jsx/clients/connector.native.js.map +1 -1
- package/dist/jsx/clients/evm.mjs +1 -0
- package/dist/jsx/clients/evm.mjs.map +1 -1
- package/dist/jsx/clients/evm.native.js +1 -0
- package/dist/jsx/clients/evm.native.js.map +1 -1
- package/dist/jsx/clients/evmRead.mjs +78 -0
- package/dist/jsx/clients/evmRead.mjs.map +1 -0
- package/dist/jsx/clients/evmRead.native.js +124 -0
- package/dist/jsx/clients/evmRead.native.js.map +1 -0
- package/dist/jsx/clients/hooks.mjs +38 -9
- package/dist/jsx/clients/hooks.mjs.map +1 -1
- package/dist/jsx/clients/hooks.native.js +43 -5
- package/dist/jsx/clients/hooks.native.js.map +1 -1
- package/dist/jsx/clients/index.mjs +4 -3
- package/dist/jsx/clients/index.mjs.map +1 -1
- package/dist/jsx/clients/index.native.js +5 -0
- package/dist/jsx/clients/index.native.js.map +1 -1
- package/dist/jsx/clients/types.mjs +7 -1
- package/dist/jsx/clients/types.mjs.map +1 -1
- package/dist/jsx/clients/types.native.js +14 -0
- package/dist/jsx/clients/types.native.js.map +1 -1
- package/dist/jsx/connectkit/adapters/BitcoinAdapter.mjs +44 -2
- package/dist/jsx/connectkit/adapters/BitcoinAdapter.mjs.map +1 -1
- package/dist/jsx/connectkit/adapters/BitcoinAdapter.native.js +73 -5
- package/dist/jsx/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
- package/dist/jsx/connectkit/adapters/SolanaAdapter.mjs +46 -0
- package/dist/jsx/connectkit/adapters/SolanaAdapter.mjs.map +1 -1
- package/dist/jsx/connectkit/adapters/SolanaAdapter.native.js +55 -0
- package/dist/jsx/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
- package/dist/jsx/connectkit/adapters/SuiAdapter.mjs +40 -0
- package/dist/jsx/connectkit/adapters/SuiAdapter.mjs.map +1 -1
- package/dist/jsx/connectkit/adapters/SuiAdapter.native.js +50 -0
- package/dist/jsx/connectkit/adapters/SuiAdapter.native.js.map +1 -1
- package/dist/jsx/connectkit/connectors/ensureWalletConnectors.mjs +4 -1
- package/dist/jsx/connectkit/connectors/ensureWalletConnectors.mjs.map +1 -1
- package/dist/jsx/connectkit/connectors/ensureWalletConnectors.native.js +8 -1
- package/dist/jsx/connectkit/connectors/ensureWalletConnectors.native.js.map +1 -1
- package/dist/jsx/connectkit/connectors/getWalletConnectors.mjs.map +1 -1
- package/dist/jsx/connectkit/connectors/getWalletConnectors.native.js.map +1 -1
- package/dist/jsx/connectkit/connectors/syntheticChains.mjs.map +1 -1
- package/dist/jsx/connectkit/connectors/syntheticChains.native.js.map +1 -1
- package/dist/jsx/connectkit/connectors/walletAdapterConnector.mjs.map +1 -1
- package/dist/jsx/connectkit/connectors/walletAdapterConnector.native.js.map +1 -1
- package/dist/jsx/connectkit/defaultConfig.mjs +6 -3
- package/dist/jsx/connectkit/defaultConfig.mjs.map +1 -1
- package/dist/jsx/connectkit/defaultConfig.native.js +9 -2
- package/dist/jsx/connectkit/defaultConfig.native.js.map +1 -1
- package/dist/jsx/connectkit/siwe/SIWEContext.mjs.map +1 -1
- package/dist/jsx/connectkit/siwe/SIWEContext.native.js.map +1 -1
- package/dist/jsx/connectkit/siwe/SIWEProvider.mjs +6 -4
- package/dist/jsx/connectkit/siwe/SIWEProvider.mjs.map +1 -1
- package/dist/jsx/connectkit/siwe/SIWEProvider.native.js +8 -4
- package/dist/jsx/connectkit/siwe/SIWEProvider.native.js.map +1 -1
- package/dist/jsx/connectkit/siwe/connectIntent.mjs +54 -16
- package/dist/jsx/connectkit/siwe/connectIntent.mjs.map +1 -1
- package/dist/jsx/connectkit/siwe/connectIntent.native.js +100 -16
- package/dist/jsx/connectkit/siwe/connectIntent.native.js.map +1 -1
- package/dist/jsx/connectkit/siwe/useSIWE.mjs.map +1 -1
- package/dist/jsx/connectkit/siwe/useSIWE.native.js.map +1 -1
- package/dist/jsx/connectkit/web3Bridge.mjs +61 -16
- package/dist/jsx/connectkit/web3Bridge.mjs.map +1 -1
- package/dist/jsx/connectkit/web3Bridge.native.js +64 -14
- package/dist/jsx/connectkit/web3Bridge.native.js.map +1 -1
- package/dist/jsx/core/family.mjs +17 -0
- package/dist/jsx/core/family.mjs.map +1 -1
- package/dist/jsx/core/family.native.js +17 -0
- package/dist/jsx/core/family.native.js.map +1 -1
- package/dist/jsx/core/index.mjs +5 -3
- package/dist/jsx/core/index.mjs.map +1 -1
- package/dist/jsx/core/index.native.js +10 -1
- package/dist/jsx/core/index.native.js.map +1 -1
- package/dist/jsx/core/lightDriver.mjs +157 -0
- package/dist/jsx/core/lightDriver.mjs.map +1 -0
- package/dist/jsx/core/lightDriver.native.js +260 -0
- package/dist/jsx/core/lightDriver.native.js.map +1 -0
- package/dist/jsx/core/react.mjs +10 -1
- package/dist/jsx/core/react.mjs.map +1 -1
- package/dist/jsx/core/react.native.js +16 -1
- package/dist/jsx/core/react.native.js.map +1 -1
- package/dist/jsx/core/signIn.mjs +173 -0
- package/dist/jsx/core/signIn.mjs.map +1 -0
- package/dist/jsx/core/signIn.native.js +240 -0
- package/dist/jsx/core/signIn.native.js.map +1 -0
- package/dist/jsx/core/store.mjs +47 -2
- package/dist/jsx/core/store.mjs.map +1 -1
- package/dist/jsx/core/store.native.js +49 -2
- package/dist/jsx/core/store.native.js.map +1 -1
- package/dist/jsx/families/btc.mjs +19 -0
- package/dist/jsx/families/btc.mjs.map +1 -0
- package/dist/jsx/families/btc.native.js +49 -0
- package/dist/jsx/families/btc.native.js.map +1 -0
- package/dist/jsx/families/eth.mjs +32 -0
- package/dist/jsx/families/eth.mjs.map +1 -0
- package/dist/jsx/families/eth.native.js +61 -0
- package/dist/jsx/families/eth.native.js.map +1 -0
- package/dist/jsx/families/gpg.mjs +15 -0
- package/dist/jsx/families/gpg.mjs.map +1 -0
- package/dist/jsx/families/gpg.native.js +43 -0
- package/dist/jsx/families/gpg.native.js.map +1 -0
- package/dist/jsx/families/host.mjs +12 -0
- package/dist/jsx/families/host.mjs.map +1 -0
- package/dist/jsx/families/host.native.js +41 -0
- package/dist/jsx/families/host.native.js.map +1 -0
- package/dist/jsx/families/index.mjs +23 -0
- package/dist/jsx/families/index.mjs.map +1 -0
- package/dist/jsx/families/index.native.js +56 -0
- package/dist/jsx/families/index.native.js.map +1 -0
- package/dist/jsx/families/messages.mjs +32 -0
- package/dist/jsx/families/messages.mjs.map +1 -0
- package/dist/jsx/families/messages.native.js +66 -0
- package/dist/jsx/families/messages.native.js.map +1 -0
- package/dist/jsx/families/sol.mjs +30 -0
- package/dist/jsx/families/sol.mjs.map +1 -0
- package/dist/jsx/families/sol.native.js +64 -0
- package/dist/jsx/families/sol.native.js.map +1 -0
- package/dist/jsx/families/sui.mjs +23 -0
- package/dist/jsx/families/sui.mjs.map +1 -0
- package/dist/jsx/families/sui.native.js +53 -0
- package/dist/jsx/families/sui.native.js.map +1 -0
- package/dist/jsx/index.js +6 -3
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +6 -3
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +21 -1
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/keycloak/keycloakWallet.mjs +13 -0
- package/dist/jsx/keycloak/keycloakWallet.mjs.map +1 -1
- package/dist/jsx/keycloak/keycloakWallet.native.js +15 -0
- package/dist/jsx/keycloak/keycloakWallet.native.js.map +1 -1
- package/dist/jsx/keycloak/useDirectLogin.mjs +10 -5
- package/dist/jsx/keycloak/useDirectLogin.mjs.map +1 -1
- package/dist/jsx/keycloak/useDirectLogin.native.js +12 -5
- package/dist/jsx/keycloak/useDirectLogin.native.js.map +1 -1
- package/dist/jsx/keycloak/useWalletLogin.mjs +16 -8
- package/dist/jsx/keycloak/useWalletLogin.mjs.map +1 -1
- package/dist/jsx/light/drivers.mjs +46 -0
- package/dist/jsx/light/drivers.mjs.map +1 -0
- package/dist/jsx/light/drivers.native.js +97 -0
- package/dist/jsx/light/drivers.native.js.map +1 -0
- package/dist/jsx/light/index.mjs +3 -0
- package/dist/jsx/light/index.mjs.map +1 -0
- package/dist/jsx/light/index.native.js +33 -0
- package/dist/jsx/light/index.native.js.map +1 -0
- package/dist/jsx/providers/WalletProvider.mjs +60 -19
- package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
- package/dist/jsx/providers/WalletProvider.native.js +99 -56
- package/dist/jsx/providers/WalletProvider.native.js.map +1 -1
- package/dist/jsx/providers/families.mjs +27 -0
- package/dist/jsx/providers/families.mjs.map +1 -0
- package/dist/jsx/providers/families.native.js +59 -0
- package/dist/jsx/providers/families.native.js.map +1 -0
- package/dist/jsx/providers/index.mjs +2 -2
- package/dist/jsx/providers/index.mjs.map +1 -1
- package/dist/jsx/providers/index.native.js +1 -0
- package/dist/jsx/providers/index.native.js.map +1 -1
- package/dist/jsx/providers/walletConfig.mjs +40 -1
- package/dist/jsx/providers/walletConfig.mjs.map +1 -1
- package/dist/jsx/providers/walletConfig.native.js +68 -0
- package/dist/jsx/providers/walletConfig.native.js.map +1 -1
- package/dist/jsx/wagmi/driver.mjs +232 -0
- package/dist/jsx/wagmi/driver.mjs.map +1 -0
- package/dist/jsx/wagmi/driver.native.js +331 -0
- package/dist/jsx/wagmi/driver.native.js.map +1 -0
- package/dist/jsx/wagmi/host.mjs +213 -0
- package/dist/jsx/wagmi/host.mjs.map +1 -0
- package/dist/jsx/wagmi/host.native.js +320 -0
- package/dist/jsx/wagmi/host.native.js.map +1 -0
- package/dist/jsx/wagmi/index.mjs +3 -0
- package/dist/jsx/wagmi/index.mjs.map +1 -0
- package/dist/jsx/wagmi/index.native.js +31 -0
- package/dist/jsx/wagmi/index.native.js.map +1 -0
- package/dist/jsx/web.mjs +13 -0
- package/dist/jsx/web.mjs.map +1 -0
- package/dist/keycloak/login.iife.js +449 -443
- package/docs/bridge-protocol.md +41 -14
- package/package.json +13 -6
- package/src/bridge/base58.spec.ts +18 -0
- package/src/bridge/base58.ts +25 -0
- package/src/bridge/core.ts +2 -0
- package/src/bridge/drivers.spec.ts +283 -0
- package/src/bridge/drivers.ts +155 -0
- package/src/bridge/index.spec.ts +3 -0
- package/src/bridge/nativeHost.spec.ts +139 -15
- package/src/bridge/nativeHost.ts +84 -14
- package/src/bundler/metaMaskConnectTimeouts.spec.ts +3 -0
- package/src/clients/adapter.ts +5 -1
- package/src/clients/connector.ts +2 -0
- package/src/clients/evm.spec.ts +8 -0
- package/src/clients/evm.ts +3 -0
- package/src/clients/evmRead.spec.ts +180 -0
- package/src/clients/evmRead.ts +140 -0
- package/src/clients/hooks.spec.tsx +58 -0
- package/src/clients/hooks.ts +73 -14
- package/src/clients/index.ts +11 -1
- package/src/clients/types.ts +15 -1
- package/src/clients/useEvmReadClient.spec.tsx +93 -0
- package/src/connectkit/adapters/BitcoinAdapter.ts +64 -4
- package/src/connectkit/adapters/SolanaAdapter.ts +49 -0
- package/src/connectkit/adapters/SuiAdapter.ts +47 -1
- package/src/connectkit/connectors/ensureWalletConnectors.ts +10 -1
- package/src/connectkit/connectors/getWalletConnectors.ts +2 -0
- package/src/connectkit/connectors/syntheticChains.ts +8 -0
- package/src/connectkit/connectors/walletAdapterConnector.ts +2 -0
- package/src/connectkit/defaultConfig.ts +21 -7
- package/src/connectkit/siwe/SIWEContext.tsx +3 -0
- package/src/connectkit/siwe/SIWEProvider.spec.tsx +109 -0
- package/src/connectkit/siwe/SIWEProvider.tsx +16 -7
- package/src/connectkit/siwe/connectIntent.spec.ts +100 -30
- package/src/connectkit/siwe/connectIntent.ts +99 -25
- package/src/connectkit/siwe/useSIWE.ts +4 -1
- package/src/connectkit/web3Bridge.tsx +75 -15
- package/src/core/family.spec.ts +19 -0
- package/src/core/family.ts +43 -0
- package/src/core/imports.spec.ts +1 -1
- package/src/core/index.ts +23 -0
- package/src/core/lightDriver.spec.ts +284 -0
- package/src/core/lightDriver.ts +235 -0
- package/src/core/react.ts +18 -0
- package/src/core/signIn.spec.tsx +305 -0
- package/src/core/signIn.ts +282 -0
- package/src/core/store.spec.ts +83 -0
- package/src/core/store.ts +60 -9
- package/src/core/types.ts +15 -1
- package/src/families/btc.ts +16 -0
- package/src/families/eth.ts +35 -0
- package/src/families/families.spec.ts +180 -0
- package/src/families/gpg.ts +13 -0
- package/src/families/host.ts +34 -0
- package/src/families/index.ts +32 -0
- package/src/families/messages.ts +39 -0
- package/src/families/sol.ts +25 -0
- package/src/families/sui.ts +17 -0
- package/src/index.ts +38 -1
- package/src/keycloak/KeycloakWalletLogin.spec.tsx +211 -4
- package/src/keycloak/keycloakWallet.spec.ts +81 -1
- package/src/keycloak/keycloakWallet.ts +24 -2
- package/src/keycloak/useDirectLogin.spec.tsx +77 -4
- package/src/keycloak/useDirectLogin.ts +23 -11
- package/src/keycloak/useWalletLogin.spec.tsx +52 -0
- package/src/keycloak/useWalletLogin.ts +24 -6
- package/src/light/drivers.spec.ts +330 -0
- package/src/light/drivers.ts +54 -0
- package/src/light/index.ts +1 -0
- package/src/light/native.spec.ts +22 -0
- package/src/providers/WalletProvider.native.spec.tsx +288 -0
- package/src/providers/WalletProvider.native.tsx +132 -59
- package/src/providers/WalletProvider.spec.tsx +521 -0
- package/src/providers/WalletProvider.tsx +90 -19
- package/src/providers/families.tsx +39 -0
- package/src/providers/index.ts +3 -0
- package/src/providers/walletConfig.spec.ts +19 -1
- package/src/providers/walletConfig.ts +80 -2
- package/src/wagmi/driver.spec.ts +407 -0
- package/src/wagmi/driver.ts +303 -0
- package/src/wagmi/host.spec.tsx +416 -0
- package/src/wagmi/host.tsx +260 -0
- package/src/wagmi/index.ts +1 -0
- package/src/web.spec.ts +58 -0
- package/src/web.ts +82 -0
- package/types/bridge/base58.d.ts +2 -0
- package/types/bridge/base58.d.ts.map +1 -0
- package/types/bridge/core.d.ts +2 -1
- package/types/bridge/core.d.ts.map +1 -1
- package/types/bridge/drivers.d.ts +24 -0
- package/types/bridge/drivers.d.ts.map +1 -0
- package/types/bridge/nativeHost.d.ts +34 -4
- package/types/bridge/nativeHost.d.ts.map +1 -1
- package/types/clients/adapter.d.ts +5 -1
- package/types/clients/adapter.d.ts.map +1 -1
- package/types/clients/connector.d.ts +2 -0
- package/types/clients/connector.d.ts.map +1 -1
- package/types/clients/evm.d.ts +2 -0
- package/types/clients/evm.d.ts.map +1 -1
- package/types/clients/evmRead.d.ts +54 -0
- package/types/clients/evmRead.d.ts.map +1 -0
- package/types/clients/hooks.d.ts +23 -3
- package/types/clients/hooks.d.ts.map +1 -1
- package/types/clients/index.d.ts +4 -2
- package/types/clients/index.d.ts.map +1 -1
- package/types/clients/types.d.ts +11 -1
- package/types/clients/types.d.ts.map +1 -1
- package/types/connectkit/adapters/BitcoinAdapter.d.ts +9 -0
- package/types/connectkit/adapters/BitcoinAdapter.d.ts.map +1 -1
- package/types/connectkit/adapters/SolanaAdapter.d.ts +12 -0
- package/types/connectkit/adapters/SolanaAdapter.d.ts.map +1 -1
- package/types/connectkit/adapters/SuiAdapter.d.ts +8 -0
- package/types/connectkit/adapters/SuiAdapter.d.ts.map +1 -1
- package/types/connectkit/connectors/ensureWalletConnectors.d.ts +3 -0
- package/types/connectkit/connectors/ensureWalletConnectors.d.ts.map +1 -1
- package/types/connectkit/connectors/getWalletConnectors.d.ts +2 -0
- package/types/connectkit/connectors/getWalletConnectors.d.ts.map +1 -1
- package/types/connectkit/connectors/syntheticChains.d.ts +8 -0
- package/types/connectkit/connectors/syntheticChains.d.ts.map +1 -1
- package/types/connectkit/connectors/walletAdapterConnector.d.ts +2 -0
- package/types/connectkit/connectors/walletAdapterConnector.d.ts.map +1 -1
- package/types/connectkit/defaultConfig.d.ts +2 -1
- package/types/connectkit/defaultConfig.d.ts.map +1 -1
- package/types/connectkit/siwe/SIWEContext.d.ts.map +1 -1
- package/types/connectkit/siwe/SIWEProvider.d.ts +6 -0
- package/types/connectkit/siwe/SIWEProvider.d.ts.map +1 -1
- package/types/connectkit/siwe/connectIntent.d.ts +16 -5
- package/types/connectkit/siwe/connectIntent.d.ts.map +1 -1
- package/types/connectkit/siwe/useSIWE.d.ts +4 -0
- package/types/connectkit/siwe/useSIWE.d.ts.map +1 -1
- package/types/connectkit/web3Bridge.d.ts +2 -0
- package/types/connectkit/web3Bridge.d.ts.map +1 -1
- package/types/core/family.d.ts +26 -0
- package/types/core/family.d.ts.map +1 -1
- package/types/core/index.d.ts +6 -4
- package/types/core/index.d.ts.map +1 -1
- package/types/core/lightDriver.d.ts +52 -0
- package/types/core/lightDriver.d.ts.map +1 -0
- package/types/core/react.d.ts +4 -0
- package/types/core/react.d.ts.map +1 -1
- package/types/core/signIn.d.ts +85 -0
- package/types/core/signIn.d.ts.map +1 -0
- package/types/core/store.d.ts +12 -3
- package/types/core/store.d.ts.map +1 -1
- package/types/core/types.d.ts +14 -1
- package/types/core/types.d.ts.map +1 -1
- package/types/families/btc.d.ts +4 -0
- package/types/families/btc.d.ts.map +1 -0
- package/types/families/eth.d.ts +13 -0
- package/types/families/eth.d.ts.map +1 -0
- package/types/families/gpg.d.ts +4 -0
- package/types/families/gpg.d.ts.map +1 -0
- package/types/families/host.d.ts +24 -0
- package/types/families/host.d.ts.map +1 -0
- package/types/families/index.d.ts +14 -0
- package/types/families/index.d.ts.map +1 -0
- package/types/families/messages.d.ts +7 -0
- package/types/families/messages.d.ts.map +1 -0
- package/types/families/sol.d.ts +9 -0
- package/types/families/sol.d.ts.map +1 -0
- package/types/families/sui.d.ts +4 -0
- package/types/families/sui.d.ts.map +1 -0
- package/types/index.d.ts +5 -2
- package/types/index.d.ts.map +1 -1
- package/types/keycloak/keycloakWallet.d.ts +15 -2
- package/types/keycloak/keycloakWallet.d.ts.map +1 -1
- package/types/keycloak/useDirectLogin.d.ts +11 -6
- package/types/keycloak/useDirectLogin.d.ts.map +1 -1
- package/types/keycloak/useWalletLogin.d.ts +8 -1
- package/types/keycloak/useWalletLogin.d.ts.map +1 -1
- package/types/light/drivers.d.ts +13 -0
- package/types/light/drivers.d.ts.map +1 -0
- package/types/light/index.d.ts +2 -0
- package/types/light/index.d.ts.map +1 -0
- package/types/providers/WalletProvider.d.ts +37 -6
- package/types/providers/WalletProvider.d.ts.map +1 -1
- package/types/providers/WalletProvider.native.d.ts +32 -3
- package/types/providers/WalletProvider.native.d.ts.map +1 -1
- package/types/providers/families.d.ts +12 -0
- package/types/providers/families.d.ts.map +1 -0
- package/types/providers/index.d.ts +1 -1
- package/types/providers/index.d.ts.map +1 -1
- package/types/providers/walletConfig.d.ts +32 -2
- package/types/providers/walletConfig.d.ts.map +1 -1
- package/types/wagmi/driver.d.ts +44 -0
- package/types/wagmi/driver.d.ts.map +1 -0
- package/types/wagmi/host.d.ts +31 -0
- package/types/wagmi/host.d.ts.map +1 -0
- package/types/wagmi/index.d.ts +2 -0
- package/types/wagmi/index.d.ts.map +1 -0
- package/types/web.d.ts +13 -0
- package/types/web.d.ts.map +1 -0
package/src/core/store.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ChainClient } from "../clients/types";
|
|
2
2
|
import { createFamilyRegistry, type FamilyRegistry, type WalletFamily } from "./family";
|
|
3
3
|
import type {
|
|
4
|
+
ConnectOptions,
|
|
4
5
|
ConnectionDriver,
|
|
5
6
|
ConnectionState,
|
|
6
7
|
ConnectionStorage,
|
|
@@ -52,13 +53,10 @@ export interface ConnectionStore {
|
|
|
52
53
|
subscribeConnectors(listener: () => void): () => void;
|
|
53
54
|
/**
|
|
54
55
|
* Connects one family's connector, first closing any other connection.
|
|
55
|
-
* Remembers {family, connectorId} on success.
|
|
56
|
+
* Remembers {family, connectorId} on success. With `silent` it only takes a
|
|
57
|
+
* connection the wallet already granted, never prompting.
|
|
56
58
|
*/
|
|
57
|
-
connect(
|
|
58
|
-
family: string,
|
|
59
|
-
connectorId: string,
|
|
60
|
-
options?: DriverConnectOptions,
|
|
61
|
-
): Promise<ConnectionState>;
|
|
59
|
+
connect(family: string, connectorId: string, options?: ConnectOptions): Promise<ConnectionState>;
|
|
62
60
|
/** Closes the active connection and forgets it. */
|
|
63
61
|
disconnect(): Promise<void>;
|
|
64
62
|
/**
|
|
@@ -67,6 +65,13 @@ export interface ConnectionStore {
|
|
|
67
65
|
* wallet side keeps the record, so a later reconnect() can restore it.
|
|
68
66
|
*/
|
|
69
67
|
reconnect(): Promise<ConnectionState>;
|
|
68
|
+
/**
|
|
69
|
+
* The active connection's client. When the driver has not handed one over
|
|
70
|
+
* yet, or its last build failed, the driver is asked again and the store
|
|
71
|
+
* keeps what it gets. Null with nothing connected or a driver without
|
|
72
|
+
* clients; rejects with the driver's error.
|
|
73
|
+
*/
|
|
74
|
+
client(): Promise<ChainClient | null>;
|
|
70
75
|
/**
|
|
71
76
|
* Stops listening to every driver and to this store's listeners, and refuses
|
|
72
77
|
* later connects. It closes nothing: the connection and the attempt live at
|
|
@@ -90,6 +95,13 @@ const disconnected: ConnectionState = Object.freeze({
|
|
|
90
95
|
|
|
91
96
|
const superseded = () => new Error("wallet connect superseded");
|
|
92
97
|
|
|
98
|
+
/** The options a driver sees: the store's own `silent` stays with the store. */
|
|
99
|
+
function driverOptions(options: ConnectOptions | undefined): DriverConnectOptions | undefined {
|
|
100
|
+
if (!options || !("silent" in options)) return options;
|
|
101
|
+
const { silent: _silent, ...rest } = options;
|
|
102
|
+
return rest;
|
|
103
|
+
}
|
|
104
|
+
|
|
93
105
|
function browserStorage(): ConnectionStorage | null {
|
|
94
106
|
try {
|
|
95
107
|
const storage = (globalThis as { localStorage?: ConnectionStorage }).localStorage;
|
|
@@ -455,15 +467,27 @@ export function createConnectionStore(options: ConnectionStoreOptions): Connecti
|
|
|
455
467
|
try {
|
|
456
468
|
if (current !== operation) throw superseded();
|
|
457
469
|
asked = true;
|
|
458
|
-
|
|
470
|
+
if (connectOptions?.silent) {
|
|
471
|
+
const granted = await driver.reconnect(connectorId);
|
|
472
|
+
if (!granted) {
|
|
473
|
+
throw new Error(`wallet ${family.id} ${connectorId} is not authorised on this page`);
|
|
474
|
+
}
|
|
475
|
+
account = granted;
|
|
476
|
+
} else {
|
|
477
|
+
account = await driver.connect(connectorId, driverOptions(connectOptions));
|
|
478
|
+
}
|
|
459
479
|
} catch (error) {
|
|
460
480
|
if (current === operation) {
|
|
461
481
|
pending = null;
|
|
462
482
|
set(disconnected);
|
|
463
483
|
}
|
|
464
484
|
// After destroy() the driver may serve another store; what it holds is
|
|
465
|
-
// this attempt's only if this attempt asked for it.
|
|
466
|
-
|
|
485
|
+
// this attempt's only if this attempt asked for it. A silent attempt
|
|
486
|
+
// opened nothing: what the driver holds is the connection it was
|
|
487
|
+
// handed, which stays with whoever opened it.
|
|
488
|
+
if (!connectOptions?.silent && (asked || !destroyed)) {
|
|
489
|
+
await closeOrphan(driver, connectorId);
|
|
490
|
+
}
|
|
467
491
|
throw error;
|
|
468
492
|
}
|
|
469
493
|
if (current !== operation) {
|
|
@@ -541,6 +565,33 @@ export function createConnectionStore(options: ConnectionStoreOptions): Connecti
|
|
|
541
565
|
void attempt.then(settled, settled);
|
|
542
566
|
return attempt;
|
|
543
567
|
},
|
|
568
|
+
async client() {
|
|
569
|
+
if (state.client) return state.client;
|
|
570
|
+
if (state.status !== "connected" || !active || !state.address) return null;
|
|
571
|
+
const { driver, connectorId } = active;
|
|
572
|
+
const asked = state;
|
|
573
|
+
const request = ++clientRequest;
|
|
574
|
+
const client =
|
|
575
|
+
(await driver.client?.({
|
|
576
|
+
status: "connected",
|
|
577
|
+
connectorId,
|
|
578
|
+
account: {
|
|
579
|
+
address: asked.address as string,
|
|
580
|
+
...(asked.chainId === null ? {} : { chainId: asked.chainId }),
|
|
581
|
+
},
|
|
582
|
+
})) ?? null;
|
|
583
|
+
if (
|
|
584
|
+
client &&
|
|
585
|
+
request === clientRequest &&
|
|
586
|
+
active?.driver === driver &&
|
|
587
|
+
state.status === "connected" &&
|
|
588
|
+
state.address === asked.address &&
|
|
589
|
+
state.chainId === asked.chainId
|
|
590
|
+
) {
|
|
591
|
+
set(Object.freeze({ ...state, client }));
|
|
592
|
+
}
|
|
593
|
+
return client;
|
|
594
|
+
},
|
|
544
595
|
destroy() {
|
|
545
596
|
if (destroyed) return;
|
|
546
597
|
destroyed = true;
|
package/src/core/types.ts
CHANGED
|
@@ -31,6 +31,17 @@ export interface DriverConnectOptions {
|
|
|
31
31
|
onDisplayUri?: (uri: string) => void;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/** What the connection store's `connect` takes. */
|
|
35
|
+
export interface ConnectOptions extends DriverConnectOptions {
|
|
36
|
+
/**
|
|
37
|
+
* Take a connection the wallet has already granted, through the driver's
|
|
38
|
+
* silent `reconnect`, and never prompt. Rejects when the wallet has not
|
|
39
|
+
* granted it. A UI that opened the connection outside the store, such as
|
|
40
|
+
* the wagmi connect modal, hands it over this way.
|
|
41
|
+
*/
|
|
42
|
+
silent?: boolean;
|
|
43
|
+
}
|
|
44
|
+
|
|
34
45
|
/**
|
|
35
46
|
* The engine behind one wallet family's connections: wagmi for EVM, the light
|
|
36
47
|
* driver for adapter-based families. The connection store drives it and holds
|
|
@@ -47,7 +58,10 @@ export interface ConnectionDriver {
|
|
|
47
58
|
getState(): DriverState;
|
|
48
59
|
/** Called on every state change: account, chain, connector, or a disconnect from the wallet side. */
|
|
49
60
|
subscribe(listener: () => void): () => void;
|
|
50
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Prompts the user, unless the driver already holds that connector open,
|
|
63
|
+
* which resolves its account. Rejects when they decline or the wallet fails.
|
|
64
|
+
*/
|
|
51
65
|
connect(connectorId: string, options?: DriverConnectOptions): Promise<DriverAccount>;
|
|
52
66
|
/**
|
|
53
67
|
* Closes every connection the driver holds, or with a connectorId only that
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defineWalletFamily, type WalletFamily } from "../core/family";
|
|
2
|
+
import { bitcoinDriver } from "../light/drivers";
|
|
3
|
+
import { withHosting } from "./host";
|
|
4
|
+
import { btcMessage } from "./messages";
|
|
5
|
+
|
|
6
|
+
/** The Bitcoin family: UniSat, OKX or Phantom's Bitcoin wallet. */
|
|
7
|
+
export function btc(): WalletFamily {
|
|
8
|
+
const family = defineWalletFamily({
|
|
9
|
+
id: "btc",
|
|
10
|
+
label: "Bitcoin",
|
|
11
|
+
aliases: ["bitcoin"],
|
|
12
|
+
message: btcMessage,
|
|
13
|
+
driver: () => bitcoinDriver(),
|
|
14
|
+
});
|
|
15
|
+
return withHosting(family, { ecosystem: "bitcoin", chainId: "bitcoin" });
|
|
16
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Config } from "@wagmi/core";
|
|
2
|
+
import { defineWalletFamily, type WalletFamily } from "../core/family";
|
|
3
|
+
import { wagmiDriver } from "../wagmi/driver";
|
|
4
|
+
import { withHosting } from "./host";
|
|
5
|
+
import { ethMessage } from "./messages";
|
|
6
|
+
|
|
7
|
+
export interface EthFamilyOptions {
|
|
8
|
+
/**
|
|
9
|
+
* The wagmi config EVM wallets connect through. A Web3Provider uses it for
|
|
10
|
+
* its own WagmiProvider; left out, the provider builds one from its
|
|
11
|
+
* Web3Config, and a connection store made outside a provider has none.
|
|
12
|
+
*/
|
|
13
|
+
config?: Config;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** The EVM family: MetaMask, Coinbase Wallet and every EIP-6963 wallet, over wagmi and viem. */
|
|
17
|
+
export function eth(options: EthFamilyOptions = {}): WalletFamily {
|
|
18
|
+
const { config } = options;
|
|
19
|
+
const family = defineWalletFamily({
|
|
20
|
+
id: "eth",
|
|
21
|
+
label: "Ethereum",
|
|
22
|
+
aliases: ["evm"],
|
|
23
|
+
message: ethMessage,
|
|
24
|
+
driver: () => {
|
|
25
|
+
if (!config) {
|
|
26
|
+
throw new Error(
|
|
27
|
+
"eth() needs a wagmi config outside a Web3Provider: eth({ config: createConfig(...) })",
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
return wagmiDriver(config);
|
|
31
|
+
},
|
|
32
|
+
bridge: { namespace: "evm" },
|
|
33
|
+
});
|
|
34
|
+
return withHosting(family, { ecosystem: "evm", ...(config ? { config } : {}) });
|
|
35
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { accountFor, keys, scriptedConnector, wagmiConfig } from "../../tests/core/wagmiWallets";
|
|
3
|
+
import { createWallets } from "../../tests/core/driverContract";
|
|
4
|
+
import { createConnectionStore } from "../core/store";
|
|
5
|
+
import { createFamilyRegistry } from "../core/family";
|
|
6
|
+
import { buildWalletMessage, type SignerFamily } from "../message/buildWalletMessage";
|
|
7
|
+
import { btc, eth, gpg, sol, sui, walletFamilies } from "./index";
|
|
8
|
+
|
|
9
|
+
const base = {
|
|
10
|
+
domain: "app.multiplatform.one",
|
|
11
|
+
uri: "https://app.multiplatform.one/login",
|
|
12
|
+
nonce: "ohY7vD2Kq9",
|
|
13
|
+
issuedAt: "2026-09-26T20:48:18.648Z",
|
|
14
|
+
address: "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const outcome = (build: () => string) => {
|
|
18
|
+
try {
|
|
19
|
+
return { message: build() };
|
|
20
|
+
} catch {
|
|
21
|
+
return { threw: true };
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
afterEach(() => {
|
|
26
|
+
vi.unstubAllGlobals();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
describe("the built-in families", () => {
|
|
30
|
+
const registry = createFamilyRegistry([eth(), sol(), sui(), btc(), gpg()]);
|
|
31
|
+
const names: SignerFamily[] = ["eth", "evm", "sol", "solana", "sui", "btc", "bitcoin", "gpg"];
|
|
32
|
+
|
|
33
|
+
it("sign the bytes buildWalletMessage builds, for every family, alias and option", () => {
|
|
34
|
+
let compared = 0;
|
|
35
|
+
for (const family of names) {
|
|
36
|
+
for (const statement of [undefined, null, "", "Custom statement."]) {
|
|
37
|
+
for (const chainId of [undefined, 137, "solana:devnet", 900001]) {
|
|
38
|
+
for (const version of [undefined, "2"]) {
|
|
39
|
+
const opts = { ...base, statement, chainId, version };
|
|
40
|
+
expect(outcome(() => registry.messages.build(family, opts))).toEqual(
|
|
41
|
+
outcome(() => buildWalletMessage(family, opts)),
|
|
42
|
+
);
|
|
43
|
+
compared++;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
expect(compared).toBe(256);
|
|
49
|
+
for (const family of names) {
|
|
50
|
+
for (const opts of [
|
|
51
|
+
{ ...base, address: undefined },
|
|
52
|
+
{ ...base, statement: "two\nlines" },
|
|
53
|
+
]) {
|
|
54
|
+
expect(outcome(() => registry.messages.build(family, opts))).toEqual(
|
|
55
|
+
outcome(() => buildWalletMessage(family, opts)),
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it("are listed in registration order under their ids, and resolve the ecosystem names", () => {
|
|
62
|
+
expect(registry.families.map((family) => family.id)).toEqual([
|
|
63
|
+
"eth",
|
|
64
|
+
"sol",
|
|
65
|
+
"sui",
|
|
66
|
+
"btc",
|
|
67
|
+
"gpg",
|
|
68
|
+
]);
|
|
69
|
+
expect(registry.require("evm").id).toBe("eth");
|
|
70
|
+
expect(registry.require("solana").id).toBe("sol");
|
|
71
|
+
expect(registry.require("bitcoin").id).toBe("btc");
|
|
72
|
+
expect(registry.families.map((family) => family.label)).toEqual([
|
|
73
|
+
"Ethereum",
|
|
74
|
+
"Solana",
|
|
75
|
+
"Sui",
|
|
76
|
+
"Bitcoin",
|
|
77
|
+
"GPG",
|
|
78
|
+
]);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("name the bridge namespace a native app reaches them on; sol and sui bring a bridge driver", () => {
|
|
82
|
+
expect(
|
|
83
|
+
[eth(), sol(), sui(), btc(), gpg()].map((family) => [
|
|
84
|
+
family.id,
|
|
85
|
+
family.bridge?.namespace ?? null,
|
|
86
|
+
typeof family.bridge?.driver,
|
|
87
|
+
]),
|
|
88
|
+
).toEqual([
|
|
89
|
+
["eth", "evm", "undefined"],
|
|
90
|
+
["sol", "solana", "function"],
|
|
91
|
+
["sui", "sui", "function"],
|
|
92
|
+
["btc", null, "undefined"],
|
|
93
|
+
["gpg", "gpg", "undefined"],
|
|
94
|
+
]);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it("gpg signs without connecting; the wallet families each have a driver", () => {
|
|
98
|
+
expect(gpg()).toMatchObject({ connectionless: true });
|
|
99
|
+
expect(gpg().driver).toBeUndefined();
|
|
100
|
+
for (const family of [eth(), sol(), sui(), btc()]) {
|
|
101
|
+
expect(family.connectionless).toBe(false);
|
|
102
|
+
expect(typeof family.driver).toBe("function");
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it("eth connects through the wagmi config it is given", async () => {
|
|
107
|
+
const wallets = createWallets({ "wallet.one": accountFor(keys.one).address });
|
|
108
|
+
const config = wagmiConfig([
|
|
109
|
+
scriptedConnector(wallets, "wallet.one", {
|
|
110
|
+
[accountFor(keys.one).address]: accountFor(keys.one),
|
|
111
|
+
}),
|
|
112
|
+
]);
|
|
113
|
+
const store = createConnectionStore({ families: [eth({ config })], storage: null });
|
|
114
|
+
expect(store.connectors().map((entry) => `${entry.family}:${entry.connector.id}`)).toEqual([
|
|
115
|
+
"eth:wallet.one",
|
|
116
|
+
]);
|
|
117
|
+
const state = await store.connect("eth", "wallet.one");
|
|
118
|
+
expect(state).toMatchObject({
|
|
119
|
+
family: "eth",
|
|
120
|
+
address: accountFor(keys.one).address,
|
|
121
|
+
chainId: 1,
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it("eth with no wagmi config says what it needs when a store outside Web3Provider asks", () => {
|
|
126
|
+
const store = createConnectionStore({ families: [eth()], storage: null });
|
|
127
|
+
expect(() => store.connectors()).toThrow(/eth\(\) needs a wagmi config/);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
it("sol lists the injected Solana wallet on the cluster it is given", async () => {
|
|
131
|
+
const provider = {
|
|
132
|
+
isPhantom: true,
|
|
133
|
+
publicKey: null as { toString(): string } | null,
|
|
134
|
+
connect: vi.fn(async () => {
|
|
135
|
+
provider.publicKey = { toString: () => "7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV" };
|
|
136
|
+
return { publicKey: provider.publicKey };
|
|
137
|
+
}),
|
|
138
|
+
disconnect: vi.fn(async () => {}),
|
|
139
|
+
signMessage: vi.fn(),
|
|
140
|
+
};
|
|
141
|
+
vi.stubGlobal("window", { phantom: { solana: provider } });
|
|
142
|
+
const store = createConnectionStore({
|
|
143
|
+
families: [sol({ chain: "solana:devnet" })],
|
|
144
|
+
storage: null,
|
|
145
|
+
});
|
|
146
|
+
expect(store.connectors().map((entry) => entry.connector.id)).toEqual([
|
|
147
|
+
"wallet:solana:phantom",
|
|
148
|
+
]);
|
|
149
|
+
const state = await store.connect("sol", "wallet:solana:phantom");
|
|
150
|
+
expect(state).toMatchObject({
|
|
151
|
+
family: "sol",
|
|
152
|
+
address: "7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV",
|
|
153
|
+
chainId: "solana:devnet",
|
|
154
|
+
});
|
|
155
|
+
expect(state.client).toMatchObject({ family: "solana", chainId: "solana:devnet" });
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
describe("walletFamilies", () => {
|
|
160
|
+
it("is every built-in family, GPG included, when given no names", () => {
|
|
161
|
+
expect(walletFamilies().map((family) => family.id)).toEqual([
|
|
162
|
+
"eth",
|
|
163
|
+
"sol",
|
|
164
|
+
"sui",
|
|
165
|
+
"btc",
|
|
166
|
+
"gpg",
|
|
167
|
+
]);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
it("builds the families Web3Config.families names, in the connect list's order", () => {
|
|
171
|
+
expect(walletFamilies(["solana", "evm"]).map((family) => family.id)).toEqual(["eth", "sol"]);
|
|
172
|
+
expect(walletFamilies(["btc", "sui"]).map((family) => family.id)).toEqual(["sui", "btc"]);
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
it("refuses gpg, an unknown family and an empty list, as Web3Config.families does", () => {
|
|
176
|
+
for (const names of [["gpg"], ["doge"], []]) {
|
|
177
|
+
expect(() => walletFamilies(names as never)).toThrow(/families/);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineWalletFamily, type WalletFamily } from "../core/family";
|
|
2
|
+
import { gpgMessage } from "./messages";
|
|
3
|
+
|
|
4
|
+
/** GPG sign-in: the user signs the message with their key in a terminal, with no wallet connection. */
|
|
5
|
+
export function gpg(): WalletFamily {
|
|
6
|
+
return defineWalletFamily({
|
|
7
|
+
id: "gpg",
|
|
8
|
+
label: "GPG",
|
|
9
|
+
message: gpgMessage,
|
|
10
|
+
connectionless: true,
|
|
11
|
+
bridge: { namespace: "gpg" },
|
|
12
|
+
});
|
|
13
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Config } from "@wagmi/core";
|
|
2
|
+
import type { SolanaChain } from "../clients/solanaMessage";
|
|
3
|
+
import type { WalletFamily } from "../core/family";
|
|
4
|
+
|
|
5
|
+
/** The ecosystem a wagmi connector carries: `evm`, or a Solana, Sui or Bitcoin shim's. */
|
|
6
|
+
export type HostedEcosystem = "evm" | "solana" | "sui" | "bitcoin";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* How a Web3Provider hosts a built-in family on its wagmi config while the
|
|
10
|
+
* ConnectKit modal still lists and connects every wallet through wagmi
|
|
11
|
+
* (MPO-385 step 5): the family's connections are wagmi's, so the modal and
|
|
12
|
+
* the connection store see one connection. It goes when the modal reads the
|
|
13
|
+
* store.
|
|
14
|
+
*/
|
|
15
|
+
export interface WagmiHosting {
|
|
16
|
+
readonly ecosystem: HostedEcosystem;
|
|
17
|
+
/** The chain id a connection reports, in place of the shim's synthetic one. */
|
|
18
|
+
readonly chainId?: string;
|
|
19
|
+
readonly solanaChain?: SolanaChain;
|
|
20
|
+
/** The wagmi config the app gave `eth()`, which the provider then uses. */
|
|
21
|
+
readonly config?: Config;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const hosting = new WeakMap<WalletFamily, WagmiHosting>();
|
|
25
|
+
|
|
26
|
+
export function withHosting(family: WalletFamily, spec: WagmiHosting): WalletFamily {
|
|
27
|
+
hosting.set(family, Object.freeze({ ...spec }));
|
|
28
|
+
return family;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** How a Web3Provider hosts this family on wagmi; undefined for GPG and a family of the app's own. */
|
|
32
|
+
export function wagmiHosting(family: WalletFamily): WagmiHosting | undefined {
|
|
33
|
+
return hosting.get(family);
|
|
34
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// The built-in wallet families (MPO-385): what an app hands Web3Provider,
|
|
2
|
+
// `families={[eth(), sol(), gpg()]}`. Each carries its sign-in message and its
|
|
3
|
+
// connection driver; step 6 moves each into its own package.
|
|
4
|
+
import type { WalletFamily } from "../core/family";
|
|
5
|
+
import { resolveFamilies, type ConnectorFamily } from "../providers/walletConfig";
|
|
6
|
+
import { btc } from "./btc";
|
|
7
|
+
import { eth } from "./eth";
|
|
8
|
+
import { gpg } from "./gpg";
|
|
9
|
+
import { sol } from "./sol";
|
|
10
|
+
import { sui } from "./sui";
|
|
11
|
+
|
|
12
|
+
export { btc } from "./btc";
|
|
13
|
+
export { eth, type EthFamilyOptions } from "./eth";
|
|
14
|
+
export { gpg } from "./gpg";
|
|
15
|
+
export { sol, type SolFamilyOptions } from "./sol";
|
|
16
|
+
export { sui } from "./sui";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The families `Web3Config.families` names, in the connect list's order, or
|
|
20
|
+
* with no names every built-in family, GPG included. Throws where
|
|
21
|
+
* `Web3Config.families` does: on `gpg`, an unknown name and an empty list.
|
|
22
|
+
*/
|
|
23
|
+
export function walletFamilies(names?: readonly ConnectorFamily[]): WalletFamily[] {
|
|
24
|
+
if (names === undefined) return [eth(), sol(), sui(), btc(), gpg()];
|
|
25
|
+
const { evm, ecosystems } = resolveFamilies({ families: names });
|
|
26
|
+
return [
|
|
27
|
+
...(evm ? [eth()] : []),
|
|
28
|
+
...(ecosystems.includes("solana") ? [sol()] : []),
|
|
29
|
+
...(ecosystems.includes("sui") ? [sui()] : []),
|
|
30
|
+
...(ecosystems.includes("bitcoin") ? [btc()] : []),
|
|
31
|
+
];
|
|
32
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { getAddress } from "viem";
|
|
2
|
+
import type { WalletMessageSpec } from "../core/message";
|
|
3
|
+
|
|
4
|
+
// The five families' sign-in messages, byte for byte what buildWalletMessage
|
|
5
|
+
// builds and the Keycloak verifiers parse. families.spec.ts holds them to it.
|
|
6
|
+
|
|
7
|
+
export const ethMessage: WalletMessageSpec = {
|
|
8
|
+
header: "wants you to sign in with your Ethereum account:",
|
|
9
|
+
statement: "Sign in With Ethereum.",
|
|
10
|
+
chainId: "1",
|
|
11
|
+
numericChainId: true,
|
|
12
|
+
keepStatementLine: true,
|
|
13
|
+
normalizeAddress: (address) => getAddress(address),
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const solMessage: WalletMessageSpec = {
|
|
17
|
+
header: "wants you to sign in with your Solana account:",
|
|
18
|
+
statement: "Sign in With Solana.",
|
|
19
|
+
chainId: "solana:mainnet",
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const suiMessage: WalletMessageSpec = {
|
|
23
|
+
header: "wants you to sign in with your Sui account:",
|
|
24
|
+
statement: "Sign in With Sui.",
|
|
25
|
+
chainId: "sui:mainnet",
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const btcMessage: WalletMessageSpec = {
|
|
29
|
+
header: "wants you to sign in with your Bitcoin account:",
|
|
30
|
+
statement: "Sign in With Bitcoin.",
|
|
31
|
+
chainId: "bitcoin",
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const gpgMessage: WalletMessageSpec = {
|
|
35
|
+
header: "wants you to sign in with your GPG key.",
|
|
36
|
+
statement: null,
|
|
37
|
+
chainId: null,
|
|
38
|
+
address: false,
|
|
39
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { solanaBridgeDriver } from "../bridge/drivers";
|
|
2
|
+
import type { SolanaChain } from "../clients/solanaMessage";
|
|
3
|
+
import { defineWalletFamily, type WalletFamily } from "../core/family";
|
|
4
|
+
import { solanaDriver } from "../light/drivers";
|
|
5
|
+
import { withHosting } from "./host";
|
|
6
|
+
import { solMessage } from "./messages";
|
|
7
|
+
|
|
8
|
+
export interface SolFamilyOptions {
|
|
9
|
+
/** The cluster accounts are on. Defaults to `solana:mainnet`. */
|
|
10
|
+
chain?: SolanaChain;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** The Solana family: the injected Solana wallet (Phantom, or any `window.solana`). */
|
|
14
|
+
export function sol(options: SolFamilyOptions = {}): WalletFamily {
|
|
15
|
+
const chain = options.chain ?? "solana:mainnet";
|
|
16
|
+
const family = defineWalletFamily({
|
|
17
|
+
id: "sol",
|
|
18
|
+
label: "Solana",
|
|
19
|
+
aliases: ["solana"],
|
|
20
|
+
message: solMessage,
|
|
21
|
+
driver: () => solanaDriver({ chain }),
|
|
22
|
+
bridge: { namespace: "solana", driver: (bridge) => solanaBridgeDriver(bridge, { chain }) },
|
|
23
|
+
});
|
|
24
|
+
return withHosting(family, { ecosystem: "solana", chainId: chain, solanaChain: chain });
|
|
25
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { suiBridgeDriver } from "../bridge/drivers";
|
|
2
|
+
import { defineWalletFamily, type WalletFamily } from "../core/family";
|
|
3
|
+
import { suiDriver } from "../light/drivers";
|
|
4
|
+
import { withHosting } from "./host";
|
|
5
|
+
import { suiMessage } from "./messages";
|
|
6
|
+
|
|
7
|
+
/** The Sui family: the first Wallet Standard Sui wallet on the page. */
|
|
8
|
+
export function sui(): WalletFamily {
|
|
9
|
+
const family = defineWalletFamily({
|
|
10
|
+
id: "sui",
|
|
11
|
+
label: "Sui",
|
|
12
|
+
message: suiMessage,
|
|
13
|
+
driver: () => suiDriver(),
|
|
14
|
+
bridge: { namespace: "sui", driver: suiBridgeDriver },
|
|
15
|
+
});
|
|
16
|
+
return withHosting(family, { ecosystem: "sui", chainId: "sui:mainnet" });
|
|
17
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
// Providers
|
|
2
2
|
export {
|
|
3
3
|
WalletProvider,
|
|
4
|
+
Web3Provider,
|
|
4
5
|
useWeb3Config,
|
|
5
6
|
defaultChains,
|
|
6
7
|
useWalletBridge,
|
|
8
|
+
type ConnectorFamily,
|
|
7
9
|
type WalletBridgeContextValue,
|
|
8
10
|
type WalletProviderProps,
|
|
9
11
|
type Web3Config,
|
|
12
|
+
type Web3ProviderProps,
|
|
10
13
|
} from "./providers";
|
|
11
14
|
|
|
12
15
|
// Hooks
|
|
@@ -61,7 +64,20 @@ export { LockContract, lockAbi, type LockContractProps } from "./examples";
|
|
|
61
64
|
|
|
62
65
|
// Re-export useful types from viem/wagmi
|
|
63
66
|
export type { Address, Chain } from "viem";
|
|
64
|
-
export {
|
|
67
|
+
export {
|
|
68
|
+
mainnet,
|
|
69
|
+
polygon,
|
|
70
|
+
optimism,
|
|
71
|
+
arbitrum,
|
|
72
|
+
base,
|
|
73
|
+
sepolia,
|
|
74
|
+
bsc,
|
|
75
|
+
baseSepolia,
|
|
76
|
+
bscTestnet,
|
|
77
|
+
polygonAmoy,
|
|
78
|
+
optimismSepolia,
|
|
79
|
+
arbitrumSepolia,
|
|
80
|
+
} from "wagmi/chains";
|
|
65
81
|
|
|
66
82
|
// Bridge (Hermes-safe; shared by web + the native WebView host)
|
|
67
83
|
export * from "./bridge";
|
|
@@ -81,3 +97,24 @@ export * from "./clients";
|
|
|
81
97
|
// Core contracts (MPO-385): the family registry, connection driver and store,
|
|
82
98
|
// and the message registry. Chain-SDK free, so Hermes-safe on the native entry.
|
|
83
99
|
export * from "./core";
|
|
100
|
+
|
|
101
|
+
// The EVM connection driver (MPO-385): wagmi and viem behind the core's
|
|
102
|
+
// ConnectionDriver, the engine the eth family runs on.
|
|
103
|
+
export { wagmiDriver, type WagmiDriverOptions } from "./wagmi";
|
|
104
|
+
|
|
105
|
+
// The light connection drivers (MPO-385) for families with no wallet SDK:
|
|
106
|
+
// Solana, Sui and Bitcoin over their injected or Wallet Standard wallets.
|
|
107
|
+
export { bitcoinDriver, solanaDriver, suiDriver, type SolanaDriverOptions } from "./light";
|
|
108
|
+
|
|
109
|
+
// The built-in wallet families (MPO-385) an app hands Web3Provider:
|
|
110
|
+
// `families={[eth(), sol(), gpg()]}`.
|
|
111
|
+
export {
|
|
112
|
+
btc,
|
|
113
|
+
eth,
|
|
114
|
+
gpg,
|
|
115
|
+
sol,
|
|
116
|
+
sui,
|
|
117
|
+
walletFamilies,
|
|
118
|
+
type EthFamilyOptions,
|
|
119
|
+
type SolFamilyOptions,
|
|
120
|
+
} from "./families";
|