@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
|
@@ -9,54 +9,128 @@
|
|
|
9
9
|
* shut, so web3Bridge would route to the sign-in screen without anything on screen —
|
|
10
10
|
* the user has to press connect a second time just to reach the signature prompt.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* The intent lives in localStorage. A phone often kills the whole browser while the
|
|
13
|
+
* wallet app is in front, and that loses sessionStorage along with the page (measured
|
|
14
|
+
* on Android 16 Chrome, PROMA-87). It is only read, never used up, when the page comes
|
|
15
|
+
* back: a page that reads it and is then discarded before the user sees it would
|
|
16
|
+
* otherwise take it along. It ends with the sign-in (web3Bridge), a disconnect, the
|
|
17
|
+
* user closing the modal, or its expiry.
|
|
18
|
+
*
|
|
19
|
+
* localStorage outlives the tab, so only two pages act on it: the one that set it, and
|
|
20
|
+
* one the browser brought back (a reload, or the history restore Android Chrome does
|
|
21
|
+
* for a tab it killed). A page opened fresh, a new tab say, leaves it alone.
|
|
13
22
|
*
|
|
14
23
|
* It is deliberately an INTENT flag rather than "reopen whenever connected": a cold
|
|
15
24
|
* page load with a wallet already connected must NOT pop a modal the user never asked
|
|
16
|
-
* for. Only a connect the user
|
|
17
|
-
* once acted on.
|
|
25
|
+
* for. Only a connect the user started carries the intent.
|
|
18
26
|
*
|
|
19
27
|
* The stored value is the moment the intent expires. An abandoned connect (the user
|
|
20
|
-
* opened the wallet and never came back) would otherwise leave the flag set
|
|
21
|
-
*
|
|
22
|
-
*
|
|
28
|
+
* opened the wallet and never came back) would otherwise leave the flag set, and a
|
|
29
|
+
* later visit whose wallet auto-reconnects would pop a signature request nobody asked
|
|
30
|
+
* for.
|
|
23
31
|
*/
|
|
24
32
|
const KEY = "wallet:connect-intent";
|
|
25
33
|
|
|
26
|
-
/**
|
|
27
|
-
|
|
34
|
+
/**
|
|
35
|
+
* How long a connect intent stays good: a wallet app's cold start, its unlock and the
|
|
36
|
+
* user reading two screens, the same budget MetaMask Connect gives its own request.
|
|
37
|
+
*/
|
|
38
|
+
export const CONNECT_INTENT_TTL_MS = 600_000;
|
|
28
39
|
|
|
29
|
-
|
|
30
|
-
|
|
40
|
+
type IntentStorage = Pick<Storage, "getItem" | "setItem" | "removeItem">;
|
|
41
|
+
|
|
42
|
+
function storageOf(name: "localStorage" | "sessionStorage"): IntentStorage | null {
|
|
43
|
+
if (typeof window === "undefined") return null;
|
|
31
44
|
try {
|
|
32
|
-
|
|
45
|
+
const storage = window[name];
|
|
46
|
+
if (typeof storage?.getItem === "function" && typeof storage.removeItem === "function") {
|
|
47
|
+
return storage;
|
|
48
|
+
}
|
|
33
49
|
} catch {
|
|
34
|
-
//
|
|
50
|
+
// A blocked storage throws on access.
|
|
35
51
|
}
|
|
52
|
+
return null;
|
|
36
53
|
}
|
|
37
54
|
|
|
38
55
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
56
|
+
* Where the intent lives: localStorage, which a browser kill keeps, and sessionStorage,
|
|
57
|
+
* which a same-tab reload keeps whatever the browser reports about the navigation.
|
|
41
58
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
59
|
+
function intentStorages(): IntentStorage[] {
|
|
60
|
+
return [storageOf("localStorage"), storageOf("sessionStorage")].filter(
|
|
61
|
+
(storage): storage is IntentStorage => storage !== null,
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function liveIn(storage: IntentStorage | null, now: number): boolean {
|
|
66
|
+
const raw = storage?.getItem(KEY) ?? null;
|
|
67
|
+
if (raw === null) return false;
|
|
68
|
+
const expiresAt = Number(raw);
|
|
69
|
+
if (Number.isFinite(expiresAt) && now < expiresAt) return true;
|
|
70
|
+
storage?.removeItem(KEY);
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
let setByThisPage = false;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Whether the browser brought this document back rather than opening it: a reload, a
|
|
78
|
+
* history restore (Android Chrome restores a tab it killed as `back_forward`, measured
|
|
79
|
+
* on Android 16) or a discarded tab.
|
|
80
|
+
*/
|
|
81
|
+
export function isRestoredPage(): boolean {
|
|
44
82
|
try {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return Number.isFinite(expiresAt) && now < expiresAt;
|
|
83
|
+
if ((globalThis.document as { wasDiscarded?: boolean } | undefined)?.wasDiscarded) return true;
|
|
84
|
+
const [entry] = globalThis.performance?.getEntriesByType?.("navigation") ?? [];
|
|
85
|
+
const type = (entry as { type?: string } | undefined)?.type;
|
|
86
|
+
return type === "reload" || type === "back_forward";
|
|
50
87
|
} catch {
|
|
51
88
|
return false;
|
|
52
89
|
}
|
|
53
90
|
}
|
|
54
91
|
|
|
55
|
-
export function
|
|
56
|
-
|
|
92
|
+
export function setConnectIntent(ttlMs: number = CONNECT_INTENT_TTL_MS, now: number = Date.now()) {
|
|
93
|
+
setByThisPage = true;
|
|
94
|
+
for (const storage of intentStorages()) {
|
|
95
|
+
try {
|
|
96
|
+
storage.setItem(KEY, String(now + ttlMs));
|
|
97
|
+
} catch {
|
|
98
|
+
// Private mode / storage disabled — degrade to the old behaviour, don't throw.
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* True while a connect the user started is still good, in the tab that started it or
|
|
105
|
+
* on a page the browser brought back. Reading it leaves it in place.
|
|
106
|
+
*/
|
|
107
|
+
export function hasConnectIntent(
|
|
108
|
+
now: number = Date.now(),
|
|
109
|
+
restored: boolean = isRestoredPage(),
|
|
110
|
+
): boolean {
|
|
57
111
|
try {
|
|
58
|
-
|
|
112
|
+
const session = storageOf("sessionStorage");
|
|
113
|
+
const local = storageOf("localStorage");
|
|
114
|
+
const inThisTab = liveIn(session, now);
|
|
115
|
+
const kept = local !== null && local !== session && liveIn(local, now);
|
|
116
|
+
return inThisTab || (kept && (setByThisPage || restored));
|
|
59
117
|
} catch {
|
|
60
|
-
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Test seam: forget that this page set the intent, as the next document would. */
|
|
123
|
+
export function resetConnectIntentPage(): void {
|
|
124
|
+
setByThisPage = false;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function clearConnectIntent() {
|
|
128
|
+
setByThisPage = false;
|
|
129
|
+
for (const storage of intentStorages()) {
|
|
130
|
+
try {
|
|
131
|
+
storage.removeItem(KEY);
|
|
132
|
+
} catch {
|
|
133
|
+
// ignore
|
|
134
|
+
}
|
|
61
135
|
}
|
|
62
136
|
}
|
|
@@ -22,7 +22,10 @@ type UseSIWEConfig = {
|
|
|
22
22
|
onSignOut?: () => void;
|
|
23
23
|
};
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
/**
|
|
26
|
+
* The SIWEProvider's sign-in state.
|
|
27
|
+
* @deprecated Goes in 8.0.0 with SIWEProvider; `useSignIn()` reads a SignInProvider.
|
|
28
|
+
*/
|
|
26
29
|
export const useSIWE = ({ onSignIn, onSignOut }: UseSIWEConfig = {}): HookProps | any => {
|
|
27
30
|
const siweContextValue = useContext(SIWEContext);
|
|
28
31
|
if (!siweContextValue) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useContext as useReactContext, useEffect, useMemo } from "react";
|
|
1
|
+
import React, { useContext as useReactContext, useEffect, useMemo, useRef } from "react";
|
|
2
2
|
import { useAccount, useAccountEffect, useConfig } from "wagmi";
|
|
3
3
|
|
|
4
4
|
import { ModalState, ModalStateProvider, routes, useContext } from "@multiplatform.one/connectkit";
|
|
@@ -7,11 +7,12 @@ import { Web3ScreenRegistrar } from "./screens";
|
|
|
7
7
|
import { ensureWalletConnectors } from "./connectors/ensureWalletConnectors";
|
|
8
8
|
import { useChainIsSupported } from "./hooks/useChainIsSupported";
|
|
9
9
|
import { useConnectCallback, useConnectCallbackProps } from "./hooks/useConnectCallback";
|
|
10
|
-
import { clearConnectIntent,
|
|
11
|
-
import { SIWEContext } from "./siwe/SIWEContext";
|
|
10
|
+
import { clearConnectIntent, hasConnectIntent } from "./siwe/connectIntent";
|
|
11
|
+
import { SIWEContext, StatusState } from "./siwe/SIWEContext";
|
|
12
12
|
import { GpgContext } from "@multiplatform.one/gpg";
|
|
13
13
|
import { useWallet } from "./wallets/useWallets";
|
|
14
14
|
import { ConnectorLauncherProvider } from "./openConnector";
|
|
15
|
+
import { WagmiConnectionHost } from "../wagmi/host";
|
|
15
16
|
|
|
16
17
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
17
18
|
// The web3 ⇄ connectkit bridge: the ONE place that knows both wagmi and the
|
|
@@ -25,8 +26,15 @@ import { ConnectorLauncherProvider } from "./openConnector";
|
|
|
25
26
|
//
|
|
26
27
|
// A gpg-only host renders no bridge → connectkit's default empty ModalState → no
|
|
27
28
|
// viem anywhere in the tree.
|
|
29
|
+
//
|
|
30
|
+
// Under a bare WagmiProvider (no Web3Provider above) it also mounts the
|
|
31
|
+
// connection store over that config, so useConnection() works wherever the
|
|
32
|
+
// modal does.
|
|
28
33
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
29
34
|
|
|
35
|
+
/** How long a page stays disconnected on load before a live intent reopens the list. */
|
|
36
|
+
export const RESUME_SETTLE_MS = 1_000;
|
|
37
|
+
|
|
30
38
|
export type Web3ModalBridgeProps = {
|
|
31
39
|
children: React.ReactNode;
|
|
32
40
|
} & useConnectCallbackProps;
|
|
@@ -40,10 +48,11 @@ export const Web3ModalBridge: React.FC<Web3ModalBridgeProps> = ({
|
|
|
40
48
|
|
|
41
49
|
useConnectCallback({ onConnect, onDisconnect });
|
|
42
50
|
|
|
43
|
-
const { isConnected, chain } = useAccount();
|
|
51
|
+
const { isConnected, chain, status } = useAccount();
|
|
44
52
|
const chainIsSupported = useChainIsSupported(chain?.id);
|
|
45
53
|
|
|
46
|
-
const
|
|
54
|
+
const siwe = useReactContext(SIWEContext);
|
|
55
|
+
const signInWithEthereum = siwe?.enabled ?? false;
|
|
47
56
|
const signInWithGpg = useReactContext(GpgContext)?.enabled ?? false;
|
|
48
57
|
const { isSignedIn } = useSIWESignedIn();
|
|
49
58
|
|
|
@@ -71,6 +80,16 @@ export const Web3ModalBridge: React.FC<Web3ModalBridgeProps> = ({
|
|
|
71
80
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
72
81
|
}, [isConnected, chainIsSupported, chain]);
|
|
73
82
|
|
|
83
|
+
// The bridge's own closes (no answer from a reconnect, a wallet connected with no
|
|
84
|
+
// sign-in step) are not the user closing the modal, so they leave the intent alone.
|
|
85
|
+
const openNow = useRef(context.open);
|
|
86
|
+
openNow.current = context.open;
|
|
87
|
+
const closingForBridge = useRef(false);
|
|
88
|
+
const closeForBridge = () => {
|
|
89
|
+
if (openNow.current) closingForBridge.current = true;
|
|
90
|
+
context.setOpen(false);
|
|
91
|
+
};
|
|
92
|
+
|
|
74
93
|
// On connect: redirect to SIWE (when enabled) or close the modal.
|
|
75
94
|
useEffect(() => {
|
|
76
95
|
if (isConnected) {
|
|
@@ -90,15 +109,16 @@ export const Web3ModalBridge: React.FC<Web3ModalBridgeProps> = ({
|
|
|
90
109
|
// setting the route alone left the sign-in screen mounted behind a shut
|
|
91
110
|
// modal, and the user had to press connect a second time just to get the
|
|
92
111
|
// signature prompt. Reopen only when the user actually initiated this
|
|
93
|
-
// connect (
|
|
112
|
+
// connect (hasConnectIntent) — a cold load with a wallet already
|
|
94
113
|
// connected must not pop a modal nobody asked for.
|
|
95
|
-
if (
|
|
114
|
+
if (hasConnectIntent()) context.setOpen(true);
|
|
96
115
|
} else {
|
|
97
|
-
|
|
116
|
+
clearConnectIntent();
|
|
117
|
+
closeForBridge();
|
|
98
118
|
}
|
|
99
119
|
}
|
|
100
120
|
} else {
|
|
101
|
-
|
|
121
|
+
closeForBridge();
|
|
102
122
|
}
|
|
103
123
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
104
124
|
}, [isConnected]);
|
|
@@ -107,6 +127,44 @@ export const Web3ModalBridge: React.FC<Web3ModalBridgeProps> = ({
|
|
|
107
127
|
// next reconnect.
|
|
108
128
|
useAccountEffect({ onDisconnect: () => clearConnectIntent() });
|
|
109
129
|
|
|
130
|
+
// So does the sign-in, and the user shutting the modal.
|
|
131
|
+
const siweStatus = siwe?.status;
|
|
132
|
+
useEffect(() => {
|
|
133
|
+
if (isSignedIn || siweStatus === StatusState.SUCCESS || siweStatus === StatusState.REJECTED) {
|
|
134
|
+
clearConnectIntent();
|
|
135
|
+
}
|
|
136
|
+
}, [isSignedIn, siweStatus]);
|
|
137
|
+
const wasOpen = useRef(context.open);
|
|
138
|
+
useEffect(() => {
|
|
139
|
+
if (wasOpen.current && !context.open && !closingForBridge.current) clearConnectIntent();
|
|
140
|
+
closingForBridge.current = false;
|
|
141
|
+
wasOpen.current = context.open;
|
|
142
|
+
}, [context.open]);
|
|
143
|
+
|
|
144
|
+
// A page the browser threw away during the wallet trip comes back without the
|
|
145
|
+
// connect's answer. Once wagmi has settled on disconnected, a live intent reopens
|
|
146
|
+
// the wallet list, one tap from the wallet, instead of leaving the bare page.
|
|
147
|
+
const latestStatus = useRef(status);
|
|
148
|
+
latestStatus.current = status;
|
|
149
|
+
const resumeChecked = useRef(false);
|
|
150
|
+
useEffect(() => {
|
|
151
|
+
if (resumeChecked.current) return;
|
|
152
|
+
if (status === "connected") {
|
|
153
|
+
resumeChecked.current = true;
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (status !== "disconnected") return;
|
|
157
|
+
const timer = setTimeout(() => {
|
|
158
|
+
if (resumeChecked.current || latestStatus.current !== "disconnected") return;
|
|
159
|
+
resumeChecked.current = true;
|
|
160
|
+
if (openNow.current || !hasConnectIntent()) return;
|
|
161
|
+
context.setRoute(routes.CONNECTORS);
|
|
162
|
+
context.setOpen(true);
|
|
163
|
+
}, RESUME_SETTLE_MS);
|
|
164
|
+
return () => clearTimeout(timer);
|
|
165
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
166
|
+
}, [status]);
|
|
167
|
+
|
|
110
168
|
const modalState = useMemo<ModalState>(
|
|
111
169
|
() => ({
|
|
112
170
|
connected: isConnected,
|
|
@@ -120,12 +178,14 @@ export const Web3ModalBridge: React.FC<Web3ModalBridgeProps> = ({
|
|
|
120
178
|
);
|
|
121
179
|
|
|
122
180
|
return (
|
|
123
|
-
<
|
|
124
|
-
<
|
|
125
|
-
|
|
126
|
-
<
|
|
127
|
-
|
|
128
|
-
|
|
181
|
+
<WagmiConnectionHost>
|
|
182
|
+
<Web3ContextProvider>
|
|
183
|
+
<Web3ScreenRegistrar />
|
|
184
|
+
<ModalStateProvider value={modalState}>
|
|
185
|
+
<ConnectorLauncherProvider>{children}</ConnectorLauncherProvider>
|
|
186
|
+
</ModalStateProvider>
|
|
187
|
+
</Web3ContextProvider>
|
|
188
|
+
</WagmiConnectionHost>
|
|
129
189
|
);
|
|
130
190
|
};
|
|
131
191
|
|
package/src/core/family.spec.ts
CHANGED
|
@@ -50,6 +50,25 @@ describe("defineWalletFamily", () => {
|
|
|
50
50
|
);
|
|
51
51
|
});
|
|
52
52
|
|
|
53
|
+
it("carries a frozen bridge namespace and driver, and refuses a bad one", () => {
|
|
54
|
+
const bridgeDriver = () => testDriver("solana", [], {});
|
|
55
|
+
const family = defineWalletFamily({
|
|
56
|
+
...sol,
|
|
57
|
+
bridge: { namespace: "solana", driver: bridgeDriver },
|
|
58
|
+
});
|
|
59
|
+
expect(family.bridge).toEqual({ namespace: "solana", driver: bridgeDriver });
|
|
60
|
+
expect(Object.isFrozen(family.bridge)).toBe(true);
|
|
61
|
+
expect(defineWalletFamily({ ...gpg, bridge: { namespace: "gpg" } }).bridge?.namespace).toBe(
|
|
62
|
+
"gpg",
|
|
63
|
+
);
|
|
64
|
+
expect(() => defineWalletFamily({ ...sol, bridge: { namespace: "Solana" } })).toThrow(
|
|
65
|
+
/bridge namespace must be lowercase/,
|
|
66
|
+
);
|
|
67
|
+
expect(() =>
|
|
68
|
+
defineWalletFamily({ ...gpg, bridge: { namespace: "gpg", driver: bridgeDriver } }),
|
|
69
|
+
).toThrow(/connectionless and cannot have a bridge driver/);
|
|
70
|
+
});
|
|
71
|
+
|
|
53
72
|
it("a connectable family needs a driver", () => {
|
|
54
73
|
expect(() => defineWalletFamily({ ...sol, driver: undefined })).toThrow(/needs a driver/);
|
|
55
74
|
});
|
package/src/core/family.ts
CHANGED
|
@@ -8,6 +8,34 @@ import {
|
|
|
8
8
|
import { assertName, nameTable } from "./names";
|
|
9
9
|
import type { ConnectionDriver } from "./types";
|
|
10
10
|
|
|
11
|
+
/** What a bridge driver asks of the native app's bridge client (`BridgeClient` fits). */
|
|
12
|
+
export interface BridgeRequester {
|
|
13
|
+
request(
|
|
14
|
+
ns: string,
|
|
15
|
+
method: string,
|
|
16
|
+
params?: unknown,
|
|
17
|
+
options?: { timeoutMs?: number; signal?: AbortSignal },
|
|
18
|
+
): Promise<unknown>;
|
|
19
|
+
/** Every event the hosted page pushes. Returns the unsubscribe. */
|
|
20
|
+
on(handler: (ns: string, method: string, params: unknown) => void): () => void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* How a React Native app reaches the family's wallets: the hosted wallet page
|
|
25
|
+
* runs them and serves the family on one bridge namespace.
|
|
26
|
+
*/
|
|
27
|
+
export interface FamilyBridge {
|
|
28
|
+
/** The namespace the page serves the family on: `evm`, `solana`, `sui`, `gpg`. */
|
|
29
|
+
readonly namespace: string;
|
|
30
|
+
/**
|
|
31
|
+
* The family's connection driver over the bridge, which the native
|
|
32
|
+
* Web3Provider uses in place of `driver`. Without it the family connects
|
|
33
|
+
* some other way on native (eth through the bridge's wagmi connector) or
|
|
34
|
+
* signs without connecting (gpg).
|
|
35
|
+
*/
|
|
36
|
+
readonly driver?: (bridge: BridgeRequester) => ConnectionDriver;
|
|
37
|
+
}
|
|
38
|
+
|
|
11
39
|
/** What a family package hands the core: `eth({chains})`, `sol({rpcUrl})`, `gpg()`. */
|
|
12
40
|
export interface WalletFamilyDefinition {
|
|
13
41
|
/** Short family id, the one the Keycloak message names: `eth`, `sol`, `sui`, `btc`, `gpg`. */
|
|
@@ -27,6 +55,8 @@ export interface WalletFamilyDefinition {
|
|
|
27
55
|
readonly screens?: readonly ScreenDef[];
|
|
28
56
|
/** A provider the family needs mounted around the app. */
|
|
29
57
|
readonly Provider?: ComponentType<{ children?: ReactNode }>;
|
|
58
|
+
/** How a native app reaches the family's wallets through the hosted wallet page. */
|
|
59
|
+
readonly bridge?: FamilyBridge;
|
|
30
60
|
}
|
|
31
61
|
|
|
32
62
|
export interface WalletFamily extends WalletFamilyDefinition {
|
|
@@ -58,12 +88,25 @@ export function defineWalletFamily(definition: WalletFamilyDefinition): WalletFa
|
|
|
58
88
|
if (!connectionless && typeof definition.driver !== "function") {
|
|
59
89
|
throw new Error(`wallet family ${definition.id} needs a driver, or connectionless: true`);
|
|
60
90
|
}
|
|
91
|
+
const { bridge } = definition;
|
|
92
|
+
if (bridge !== undefined) {
|
|
93
|
+
assertName(`wallet family ${definition.id} bridge namespace`, bridge.namespace);
|
|
94
|
+
if (bridge.driver !== undefined && typeof bridge.driver !== "function") {
|
|
95
|
+
throw new Error(`wallet family ${definition.id}'s bridge driver must be a function`);
|
|
96
|
+
}
|
|
97
|
+
if (bridge.driver && connectionless) {
|
|
98
|
+
throw new Error(
|
|
99
|
+
`wallet family ${definition.id} is connectionless and cannot have a bridge driver`,
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
61
103
|
return Object.freeze({
|
|
62
104
|
...definition,
|
|
63
105
|
aliases: Object.freeze(aliases),
|
|
64
106
|
connectionless,
|
|
65
107
|
message: Object.freeze({ ...message }),
|
|
66
108
|
...(definition.screens ? { screens: Object.freeze([...definition.screens]) } : {}),
|
|
109
|
+
...(bridge ? { bridge: Object.freeze({ ...bridge }) } : {}),
|
|
67
110
|
});
|
|
68
111
|
}
|
|
69
112
|
|
package/src/core/imports.spec.ts
CHANGED
|
@@ -67,7 +67,7 @@ function runtimeGraph(start: string) {
|
|
|
67
67
|
describe("the core entry", () => {
|
|
68
68
|
it("loads no chain SDK: only React and its own files", () => {
|
|
69
69
|
const { files, packages } = runtimeGraph(entry);
|
|
70
|
-
expect(
|
|
70
|
+
expect([...packages.keys()]).toEqual(["react"]);
|
|
71
71
|
expect(files.every((file) => file.startsWith("core/") || file === "clients/types.ts")).toBe(
|
|
72
72
|
true,
|
|
73
73
|
);
|
package/src/core/index.ts
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
export {
|
|
5
5
|
createFamilyRegistry,
|
|
6
6
|
defineWalletFamily,
|
|
7
|
+
type BridgeRequester,
|
|
8
|
+
type FamilyBridge,
|
|
7
9
|
type FamilyRegistry,
|
|
8
10
|
type WalletFamily,
|
|
9
11
|
type WalletFamilyDefinition,
|
|
@@ -22,13 +24,33 @@ export {
|
|
|
22
24
|
type ConnectionStoreOptions,
|
|
23
25
|
type FamilyConnector,
|
|
24
26
|
} from "./store";
|
|
27
|
+
export {
|
|
28
|
+
lightDriver,
|
|
29
|
+
type LightDriverOptions,
|
|
30
|
+
type LightWallet,
|
|
31
|
+
type LightWalletAdapter,
|
|
32
|
+
} from "./lightDriver";
|
|
25
33
|
export {
|
|
26
34
|
ConnectionProvider,
|
|
27
35
|
useConnection,
|
|
28
36
|
useConnectionStore,
|
|
37
|
+
useOptionalConnectionStore,
|
|
29
38
|
type ConnectionProviderProps,
|
|
30
39
|
} from "./react";
|
|
40
|
+
export {
|
|
41
|
+
SignInProvider,
|
|
42
|
+
signInWithConnection,
|
|
43
|
+
useOptionalSignIn,
|
|
44
|
+
useSignIn,
|
|
45
|
+
type SignIn,
|
|
46
|
+
type SignInConfig,
|
|
47
|
+
type SignInCredential,
|
|
48
|
+
type SignInMessageArgs,
|
|
49
|
+
type SignInProviderProps,
|
|
50
|
+
type SignInStatus,
|
|
51
|
+
} from "./signIn";
|
|
31
52
|
export type {
|
|
53
|
+
ConnectOptions,
|
|
32
54
|
ConnectionDriver,
|
|
33
55
|
ConnectionState,
|
|
34
56
|
ConnectionStatus,
|
|
@@ -40,6 +62,7 @@ export type {
|
|
|
40
62
|
WalletConnector,
|
|
41
63
|
} from "./types";
|
|
42
64
|
export {
|
|
65
|
+
ReadOnlyClientError,
|
|
43
66
|
UnsupportedClientMethodError,
|
|
44
67
|
type ChainClient,
|
|
45
68
|
type ClientCapability,
|