diff --git a/.vitepress/config.ts b/.vitepress/config.ts
index d8dcf64b8..fd2a6cf99 100644
--- a/.vitepress/config.ts
+++ b/.vitepress/config.ts
@@ -756,7 +756,33 @@ function sidebarHome() {
{
text: "⛽ Gas Tank API",
link: "/gas-tank/gas-tank-api",
- items: [],
+ collapsed: true,
+ items: [
+ {
+ text: "🔹 Introduction",
+ link: "/gas-tank/gas-tank-api",
+ },
+ {
+ text: "🔹 Authentication",
+ link: "/gas-tank/gas-tank-api#authentication",
+ },
+ {
+ text: "🔹 Messages",
+ link: "/gas-tank/gas-tank-api#messages",
+ },
+ {
+ text: "🔹 Chains / Tokens / Status",
+ link: "/gas-tank/gas-tank-api#chains-token-status",
+ },
+ {
+ text: "🔹 Balances & Gas top-up: Deposit, Withdraw, Send Gas",
+ link: "/gas-tank/gas-tank-api#balance-transactions-deposit-withdraw-send-gas",
+ },
+ {
+ text: "🔹 Other services",
+ link: "/gas-tank/gas-tank-api#other-services",
+ },
+ ],
},
{
text: "🛠️ Partners APIs",
diff --git a/assets-services/assets-and-prices-api.md b/assets-services/assets-and-prices-api.md
index cefef09a0..41c7b0889 100644
--- a/assets-services/assets-and-prices-api.md
+++ b/assets-services/assets-and-prices-api.md
@@ -170,7 +170,7 @@ getSupportedChains();
Get Assets Crypto Currencies provides information about cryptocurrencies on various blockchains, including Ethereum, Binance Smart Chain, and Solana. The API returns data such as the cryptocurrency's name, symbol, icon, type, external data, scaling factor, chain, market cap, and price.
-[Query GraphQL directly here](https://gql-router.dev.xdefi.services/graphql?explorerURLState=N4IgJg9gxgrgtgUwHYBcQC4QEcYIE4CeABAMKEAOKEJMeeyUAlggM4AUAJOQIYDmC6UhCRIEUFI2EBBPLxYBCADREOAM0YAbFPkFkClarXpIoBAGKbteZR26qrABTyMoAogBFu2gCqNENuytBTx8-BABKImAAHSQiIm4WFgQUFijY%2BPioCioaOgZmdh5%2BQS4%2BBGV1LR0VKqtlQPwnFzdbeybnVwb2vFLGvEiYuMz44oQQ7nThkayIGFQMmfiNP0YURaWIVVVk9enMgF8NzLGppdHygEkkVQgz8-iAC0SAOQQADxQHcuOl5DA8iwIHhfodQfEEGB%2BGkhg94kgIGAEPc4URGGBwTMkNxEJiRiwCHAAEYQDR4zIuYTk%2BIofQIalED5WbEaCYMuDcPAAaxSJG45AZLCg3BWSF4Zm44mBDKgz0YSAZ5E6yNhqMyOLmC32DyO2pmup1oINYOGuoOIEUIAAbpzGNwiRpWBgQKroiAxm7BKr4m71HgWOsMEQAKyKY5u-qeohIGAaMmmsPDX2WfBR71EN2y7jylhRmNxxMjN3o3NB-MaQuZN0E4mk0uCcuLA6ViM9ZquPOxiuLVtWTtx2Lmy3kCAB1QrXiPFAAeXI%2BC8kiQAGVsoxKM6QAcgA)
+[Query GraphQL directly here](https://gql-router.xdefi.services/graphql?explorerURLState=N4IgJg9gxgrgtgUwHYBcQC4QEcYIE4CeABAMKEAOKEJMeeyUAlggM4AUAJOQIYDmC6UhCRIEUFI2EBBPLxYBCADREOAM0YAbFPkFkClarXpIoBAGKbteZR26qrABTyMoAogBFu2gCqNENuytBTx8-BABKImAAHSQiIm4WFgQUFijY%2BPioCioaOgZmdh5%2BQS4%2BBGV1LR0VKqtlQPwnFzdbeybnVwb2vFLGvEiYuMz44oQQ7nThkayIGFQMmfiNP0YURaWIVVVk9enMgF8NzLGppdHygEkkVQgz8-iAC0SAOQQADxQHcuOl5DA8iwIHhfodQfEEGB%2BGkhg94kgIGAEPc4URGGBwTMkNxEJiRiwCHAAEYQDR4zIuYTk%2BIofQIalED5WbEaCYMuDcPAAaxSJG45AZLCg3BWSF4Zm44mBDKgz0YSAZ5E6yNhqMyOLmC32DyO2pmup1oINYOGuoOIEUIAAbpzGNwiRpWBgQKroiAxm7BKr4m71HgWOsMEQAKyKY5u-qeohIGAaMmmsPDX2WfBR71EN2y7jylhRmNxxMjN3o3NB-MaQuZN0E4mk0uCcuLA6ViM9ZquPOxiuLVtWTtx2Lmy3kCAB1QrXiPFAAeXI%2BC8kiQAGVsoxKM6QAcgA)
::: code-group
@@ -349,7 +349,7 @@ getCryptoAssets();
Get Assets Fiat Currencies provides information about fiat currencies on various blockchains, including Ethereum, Binance Smart Chain, and Solana. The API returns data such as the fiat currency's name, symbol, scaling factor, character, and price.
-[Query GraphQL directly here](https://gql-router.dev.xdefi.services/graphql?explorerURLState=N4IgJg9gxgrgtgUwHYBcQC4QEcYIE4CeABAGICWAhigMIx57JRkIDOAFACQAOFA5guiLUISJAigoyIgIJ5eLAIQAaIhwBmZADYp8g8lVr1GBctvwqOFNTryCAIlQQAVMogtWbABTxkoAog46LogAlETAADpIREQULCwIKCzhUTExGgZ0DEhMrGw8-ILcfAgqGma2quU2Kh66qnV4tdb43r7%2Bli14bX5hkdFpMQUIgRQpA4MxUBAwqKmTMZquZCjzCxBqagmrE2kAvmtpw%2BMLQyUAkkhqECenMchghiwQeIcLABZxAHIIAB4onhKb32wPuYH4yX6dxiSAgYAQt2hRDIYFBkyQFEQaMGLAIcAARhBNNi0iwoBQlkheCQKBIXiSpp88LSbAyiFwfH5EUjYnAZnNdncDoLJsKhcCxSCBsK9iAlCAAG4UHwUfGaVgYEBQogREDDXWCbUxXUaPAsVYYIgAViUh11jQNRCQME0xOltoGJq0rMtRp1IBRLEdztd8z2HuNIAdlpDmgj-saPQQwZdbtl8q4EHNaiWvHeKAA8lx8FQpEgAMpQHxcNCYEB7IA)
+[Query GraphQL directly here](https://gql-router.xdefi.services/graphql?explorerURLState=N4IgJg9gxgrgtgUwHYBcQC4QEcYIE4CeABAGICWAhigMIx57JRkIDOAFACQAOFA5guiLUISJAigoyIgIJ5eLAIQAaIhwBmZADYp8g8lVr1GBctvwqOFNTryCAIlQQAVMogtWbABTxkoAog46LogAlETAADpIREQULCwIKCzhUTExGgZ0DEhMrGw8-ILcfAgqGma2quU2Kh66qnV4tdb43r7%2Bli14bX5hkdFpMQUIgRQpA4MxUBAwqKmTMZquZCjzCxBqagmrE2kAvmtpw%2BMLQyUAkkhqECenMchghiwQeIcLABZxAHIIAB4onhKb32wPuYH4yX6dxiSAgYAQt2hRDIYFBkyQFEQaMGLAIcAARhBNNi0iwoBQlkheCQKBIXiSpp88LSbAyiFwfH5EUjYnAZnNdncDoLJsKhcCxSCBsK9iAlCAAG4UHwUfGaVgYEBQogREDDXWCbUxXUaPAsVYYIgAViUh11jQNRCQME0xOltoGJq0rMtRp1IBRLEdztd8z2HuNIAdlpDmgj-saPQQwZdbtl8q4EHNaiWvHeKAA8lx8FQpEgAMpQHxcNCYEB7IA)
::: code-group
@@ -605,7 +605,7 @@ getLosersTokens();
Get LP Tokens is fully the same structure as Get Assets Tokens but it’s like "Low Priority" tokens. The API returns data such as the LP token's symbol, scaling factor, address, chain, fees, defi protocols and external data.
-[Query GraphQL directly here](https://gql-router.dev.xdefi.services/graphql?explorerURLState=N4IgJg9gxgrgtgUwHYBcQC4QEcYIE4CeABADIAKAKhANbIDOAFACQAOAhgOYLpEDCESJAigoAlgICCeDnQCEAGiJMAZqIA2KfDyq0kAMXWa8ipm2VGeAETaaKoxCbNGyeUVG5Frt%2BwgCURYAAdJCIiNjo6BBQ6AODQ0LUWHXoGdi4eVk4ERVUNLSVco0UnfNNzfGLyvBc3DzLnV3d-IJD40LSELzZY1rbQqAgYVDi%2BhPtRFBHRiGVlSMne%2BIBfKfiOntH2rIBJJGUIDc3Q5DBeGDw6CDxV0YALcIA5BAAPFDIsm%2BXP47AuGJajqEkBAwAhDoCiANUHg2CJ-t9NqIwAjRnQCHAAEYQNQovp0KBsNSiJAcPSwlBXXFtNhgMB4BARKnxKD3YlM0LKBBggEQvoAN0JuHZRBWiwhoNULggFIGanBvP6rKQwtCbgEKqISDYiGFooVet5LyMWrUXSZSPNUKZWp1Ys2cDYeFoKF4bBYTJYjW5wu1g2GdtGBohaMx2KZKAILAQuKDfVjoVjBtFSxA8hAAtcbAxagZGBAPMCIA6hZ4PNChdUF0mGCIAFZ5KtCyVrjWkDA1DjWksG60K4Z8CX5YWQ1i1HRB22Oz22oWkePW%2B21NP4oWWWxifOeJOl42QDS6QzN5rFyNuyMm1UJ4vlxeGrUrx3gim0ywIHQUMoiRxbigAPJRmExAEABlKBXBYNBMBAJYgA)
+[Query GraphQL directly here](https://gql-router.xdefi.services/graphql?explorerURLState=N4IgJg9gxgrgtgUwHYBcQC4QEcYIE4CeABADIAKAKhANbIDOAFACQAOAhgOYLpEDCESJAigoAlgICCeDnQCEAGiJMAZqIA2KfDyq0kAMXWa8ipm2VGeAETaaKoxCbNGyeUVG5Frt%2BwgCURYAAdJCIiNjo6BBQ6AODQ0LUWHXoGdi4eVk4ERVUNLSVco0UnfNNzfGLyvBc3DzLnV3d-IJD40LSELzZY1rbQqAgYVDi%2BhPtRFBHRiGVlSMne%2BIBfKfiOntH2rIBJJGUIDc3Q5DBeGDw6CDxV0YALcIA5BAAPFDIsm%2BXP47AuGJajqEkBAwAhDoCiANUHg2CJ-t9NqIwAjRnQCHAAEYQNQovp0KBsNSiJAcPSwlBXXFtNhgMB4BARKnxKD3YlM0LKBBggEQvoAN0JuHZRBWiwhoNULggFIGanBvP6rKQwtCbgEKqISDYiGFooVet5LyMWrUXSZSPNUKZWp1Ys2cDYeFoKF4bBYTJYjW5wu1g2GdtGBohaMx2KZKAILAQuKDfVjoVjBtFSxA8hAAtcbAxagZGBAPMCIA6hZ4PNChdUF0mGCIAFZ5KtCyVrjWkDA1DjWksG60K4Z8CX5YWQ1i1HRB22Oz22oWkePW%2B21NP4oWWWxifOeJOl42QDS6QzN5rFyNuyMm1UJ4vlxeGrUrx3gim0ywIHQUMoiRxbigAPJRmExAEABlKBXBYNBMBAJYgA)
::: code-group
diff --git a/components/staking/CreateCosmosDelegateTx.jsx b/components/staking/CreateCosmosDelegateTx.jsx
index 0dda8fca0..7c23d2996 100644
--- a/components/staking/CreateCosmosDelegateTx.jsx
+++ b/components/staking/CreateCosmosDelegateTx.jsx
@@ -4,7 +4,7 @@ import PlayIcon from "../PlayIcon";
import { cosmosSupportedAssets as assetSupported } from "../common";
const CreateCosmosDelegateTx = () => {
- const GRAPHQL_ENDPOINT = "https://gql-router.dev.xdefi.services/graphql";
+ const GRAPHQL_ENDPOINT = "https://gql-router.xdefi.services/graphql";
const validators = ["Meria", "StakeLab", "Custom"];
const [loading, setLoading] = useState(false);
diff --git a/components/staking/CreateErc20ApproveTx.jsx b/components/staking/CreateErc20ApproveTx.jsx
index 04d711419..4c4ee99bf 100644
--- a/components/staking/CreateErc20ApproveTx.jsx
+++ b/components/staking/CreateErc20ApproveTx.jsx
@@ -4,7 +4,7 @@ import PlayIcon from "../PlayIcon";
import { otherSupportedAssets as assetSupported } from "../common";
const CreateErc20ApproveTx = () => {
- const GRAPHQL_ENDPOINT = "https://gql-router.dev.xdefi.services/graphql";
+ const GRAPHQL_ENDPOINT = "https://gql-router.xdefi.services/graphql";
const [loading, setLoading] = useState(false);
const [response, setResponse] = useState({});
const [assetSelected, setAssetSelected] = useState(undefined);
diff --git a/components/staking/CreateLidoStakeTx.jsx b/components/staking/CreateLidoStakeTx.jsx
index 4e238b170..09a23a235 100644
--- a/components/staking/CreateLidoStakeTx.jsx
+++ b/components/staking/CreateLidoStakeTx.jsx
@@ -4,7 +4,7 @@ import PlayIcon from "../PlayIcon";
import { otherSupportedAssets as assetSupported } from "../common";
const CreateLidoStakeTx = () => {
- const GRAPHQL_ENDPOINT = "https://gql-router.dev.xdefi.services/graphql";
+ const GRAPHQL_ENDPOINT = "https://gql-router.xdefi.services/graphql";
const [loading, setLoading] = useState(false);
const [response, setResponse] = useState({});
const [assetSelected, setAssetSelected] = useState(undefined);
diff --git a/components/staking/CreateStrideLiquidStakingTx.jsx b/components/staking/CreateStrideLiquidStakingTx.jsx
index 9b1866da1..b4027d270 100644
--- a/components/staking/CreateStrideLiquidStakingTx.jsx
+++ b/components/staking/CreateStrideLiquidStakingTx.jsx
@@ -4,7 +4,7 @@ import PlayIcon from "../PlayIcon";
import { cosmosSupportedAssets as assetSupported } from "../common";
const CreateStrideLiquidStakingTx = () => {
- const GRAPHQL_ENDPOINT = "https://gql-router.dev.xdefi.services/graphql";
+ const GRAPHQL_ENDPOINT = "https://gql-router.xdefi.services/graphql";
const [loading, setLoading] = useState(false);
const [response, setResponse] = useState({});
const [assetSelected, setAssetSelected] = useState(undefined);
diff --git a/components/staking/GetCosmosDelegations.jsx b/components/staking/GetCosmosDelegations.jsx
index a6cb3d1c4..23f5b4052 100644
--- a/components/staking/GetCosmosDelegations.jsx
+++ b/components/staking/GetCosmosDelegations.jsx
@@ -4,7 +4,7 @@ import PlayIcon from "../PlayIcon";
import { cosmosSupportedAssets as assetSupported } from "../common";
const GetCosmosDelegations = () => {
- const GRAPHQL_ENDPOINT = "https://gql-router.dev.xdefi.services/graphql";
+ const GRAPHQL_ENDPOINT = "https://gql-router.xdefi.services/graphql";
const [loading, setLoading] = useState(false);
const [response, setResponse] = useState({});
const [assetSelected, setAssetSelected] = useState(undefined);
diff --git a/components/staking/GetLidoStakedBalance.jsx b/components/staking/GetLidoStakedBalance.jsx
index 58a11540c..734c40c5a 100644
--- a/components/staking/GetLidoStakedBalance.jsx
+++ b/components/staking/GetLidoStakedBalance.jsx
@@ -4,7 +4,7 @@ import PlayIcon from "../PlayIcon";
import { otherSupportedAssets as assetSupported } from "../common";
const GetLidoStakedBalance = () => {
- const GRAPHQL_ENDPOINT = "https://gql-router.dev.xdefi.services/graphql";
+ const GRAPHQL_ENDPOINT = "https://gql-router.xdefi.services/graphql";
const [loading, setLoading] = useState(false);
const [response, setResponse] = useState({});
const [assetSelected, setAssetSelected] = useState(undefined);
diff --git a/components/staking/GetStrideStakedAssetBalance.jsx b/components/staking/GetStrideStakedAssetBalance.jsx
index 200fb2709..512b70e2c 100644
--- a/components/staking/GetStrideStakedAssetBalance.jsx
+++ b/components/staking/GetStrideStakedAssetBalance.jsx
@@ -4,7 +4,7 @@ import PlayIcon from "../PlayIcon";
import { cosmosSupportedAssets as assetSupported } from "../common";
const GetStrideStakedAssetBalance = () => {
- const GRAPHQL_ENDPOINT = "https://gql-router.dev.xdefi.services/graphql";
+ const GRAPHQL_ENDPOINT = "https://gql-router.xdefi.services/graphql";
const [loading, setLoading] = useState(false);
const [response, setResponse] = useState({});
const [assetSelected, setAssetSelected] = useState(undefined);
diff --git a/developers/blocknative-xdefi-integration.md b/developers/blocknative-xdefi-integration.md
index d54b61882..476ee6ac0 100644
--- a/developers/blocknative-xdefi-integration.md
+++ b/developers/blocknative-xdefi-integration.md
@@ -1,28 +1,310 @@
# BlockNative XDEFI Integration
-First, your app need to install the core Onboard library, the injected wallets module and optionally ethers js to support browser extension and mobile wallets:
+In this tutorial we're going to build dApp which supports multiple wallets using the [Web3-Onboard](https://onboard.blocknative.com) library.
+
+![image](images/blocknative/blocknative_connect_modal.jpg)
+
+### Get started
+
+Create new react app
+
+```bash
+npx create-react-app my-blocknative-app --template typescript
+```
+
+> It's always good idea to start explore something new with fresh and pristine codebase to make sure that exploration subject does not interferes with your existing codebase.
+
+I
+Install web3-onboard core and react packages.
```bash
-yarn add @web3-onboard/core @web3-onboard/injected-wallets ethers
+yarn add @web3-onboard/core @web3-onboard/react
+```
+
+> We'll be using `@web3-onboard/react` which provides some fancy react hooks on top of core package,
+
+Install wallet providers
+
+```bash
+yarn add @web3-onboard/xdefi @web3-onboard/injected-wallets @web3-onboard/walletconnect
+```
+
+> We'll be using `@web3-onboard/xdefi` package and packages for fallback wallets: `@web3-onboard/walletconnect` and `@web3-onboard/injected-wallets`
+
+### Setting up Web3Onboard provider
+
+First, we need to configure our Web3Onboard.
+Let's make Web3Onboard configuration function and complete it step by step
+
+```javascript
+import { init } from "@web3-onboard/react";
+
+export function configureWeb3Onboard() {
+ const web3Onboard = init({
+ wallets: [],
+ chains: [],
+ theme: "dark",
+ appMetadata: {
+ name: "My App",
+ description: "My App with Web3Onboard",
+ recommendedInjectedWallets: [{ name: "XDEFI", url: "https://xdefi.io" }],
+ },
+ });
+
+ return web3Onboard;
+}
+```
+
+Now we have our configuration function, but it does not do much yet.
+Let's provide some wallets
+
+```javascript
+import { init } from "@web3-onboard/react";
+import xdefiWalletModule from "@web3-onboard/xdefi"; // [!code ++]
+import walletConnectModule from "@web3-onboard/walletconnect"; // [!code ++]
+import injectedModule from "@web3-onboard/injected-wallets"; // [!code ++]
+
+export function configureWeb3Onboard() {
+
+ const wallets =
+ const web3Onboard = init({
+ wallets:[
+ xdefiWalletModule(), // [!code ++]
+ walletConnectModule({ projectId: "YOUR_PROJECT_ID" }), // [!code ++]
+ injectedModule(), // [!code ++]
+ ];
+ chains: [],
+ theme: "dark",
+ appMetadata: {
+ name: "My App",
+ description: "My App with Web3Onboard",
+ recommendedInjectedWallets: [{ name: "XDEFI", url: "https://xdefi.io" }],
+ },
+ });
+
+ return web3Onboard;
+}
+```
+
+and add supported chains
+
+```javascript
+export function configureWeb3Onboard(chains = defaultChainsList) {
+ const wallets = [
+ xdefiWalletModule(),
+ walletConnectModule({ projectId: "YOUR_PROJECT_ID" }),
+ injectedModule(),
+ ];
+ const web3Onboard = init({
+ wallets,
+ chains: export function configureWeb3Onboard() {
+ const web3Onboard = init({
+ wallets: [
+ xdefiWalletModule(),
+ walletConnectModule({ projectId: "YOUR_PROJECT_ID" }),
+ injectedModule(),
+ ],
+ chains: [// [!code ++]
+ {// [!code ++]
+ id: "0x1", // [!code ++]
+ token: "ETH", // [!code ++]
+ label: "Ethereum", // [!code ++]
+ rpcUrl: "https://ethereum-rpc.publicnode.com",// [!code ++]
+ },// [!code ++]
+ {// [!code ++]
+ id: "0x2105", // [!code ++]
+ token: "ETH", // [!code ++]
+ label: "Base",// [!code ++]
+ rpcUrl: "https://mainnet.base.org", // [!code ++]
+ },// [!code ++]
+ {// [!code ++]
+ id: "0x89",// [!code ++]
+ token: "MATIC",// [!code ++]
+ label: "Polygon",// [!code ++]
+ rpcUrl: "https://matic-mainnet.chainstacklabs.com",// [!code ++]
+ },// [!code ++]
+ ],// [!code ++]
+ theme: "dark",
+ appMetadata: {
+ name: "My App",
+ description: "My App with Web3Onboard",
+ recommendedInjectedWallets: [{ name: "XDEFI", url: "https://xdefi.io" }],
+ },
+ });
+
+ return web3Onboard;
+},
+ theme: "dark",
+ appMetadata: {
+ name: "My App",
+ description: "My App with Web3Onboard",
+ recommendedInjectedWallets: [{ name: "XDEFI", url: "https://xdefi.io" }],
+ },
+ });
+
+ return web3Onboard;
+}
+```
+
+Now, we're ready to set up Web3OnboardProvider. Open your React app enty file and wrap your app with Web3OnboardProvider like on sample below
+
+```javascript
+import React from "react";
+import ReactDOM from "react-dom/client";
+import "./index.css";
+import App from "./App";
+import { Web3OnboardProvider } from "@web3-onboard/react";
+import { configureWeb3Onboard } from "./configureWeb3Onboard";
+
+const root = ReactDOM.createRoot(
+ document.getElementById("root") as HTMLElement
+);
+
+root.render(
+
+
+
+
+
+);
```
-Then initialize in your app:
+At this point we're done with Web3OnboardProvider setup and finally can start implement our app!
+
+### Connect and disconnect wallet buttons
+
+At this step we will try to achieve following result:
+
+1. Show connect wallet button if there is no connected wallet yet
+ ![image](images/blocknative/web3-onboard-connect-wallet-btn.jpg)
+ > Our fancy "connect wallet" button
+2. Show Web3Onboard connect wallet modal on "connect wallet" button press
+ ![image](images/blocknative/blocknative_connect_modal.jpg)
+
+ > Web3Onboard connect wallet modal
+
+3. Show disconnect button once we have some wallet connected
+ ![image](images/blocknative/web3onboard-disconnect.jpg)
+ > Connected wallet state
+
+Let's proceed with implementation. Here it is:
+
+```tsx
+import { useConnectWallet } from "@web3-onboard/react";
+import "./App.css";
+import { useCallback } from "react";
+
+function App() {
+ const [{ wallet, connecting }, connectWallet, disconnectWallet] =
+ useConnectWallet();
+
+ const disconnect = useCallback(async () => {
+ if (wallet) {
+ await disconnectWallet({ label: wallet.label });
+ }
+ }, [wallet, disconnectWallet]);
+ const walletConnected = Boolean(wallet);
-```js
-import Onboard from "@web3-onboard/core";
-import xdefiWalletModule from "@web3-onboard/xdefi";
+ return (
+
+
+
+
+ {walletConnected ? (
+
+ ) : null}
+
+
+
+ );
+}
+export default App;
+```
-// initialize the module with options
-const xdefiWalletSdk = xdefiWalletModule();
+Once wallet connected, you must see Blocknative conrol center at the bottom right corner
+![image](images/blocknative/web3onboard-control-center.jpg)
+If you don't need it, you can disable it on Web3Onboard configuration step.
-const onboard = Onboard({
- // ... other Onboard options
- wallets: [
- xdefiWalletSdk(),
- //... other wallets
- ],
+```javascript
+const web3Onboard = init({
+ accountCenter: {
+ mobile: {
+ enabled: false,
+ },
+ desktop: {
+ enabled: false,
+ },
+ },
+ ...restOfTheConfig,
});
+```
+
+For more detailed information on Account center please visit Web3Onboard docs [for core library](https://onboard.blocknative.com/docs/modules/core#accountcenter) and [for React](https://onboard.blocknative.com/docs/modules/react#useaccountcenter)
+
+### Show connected chain, address and balance
-const connectedWallets = await onboard.connectWallet();
-console.log(connectedWallets);
+`useConnectWallet` hook exposes a wallet object of type `WalletState` which represents connected wallet state.
+
+Here are some typings which are briefly describe what info we can get from `WalletState` just by taking a quick look
+
+```typescript
+interface WalletState {
+ label: string;
+ icon: string;
+ provider: EIP1193Provider;
+ accounts: Account[];
+ chains: ConnectedChain[];
+ instance?: unknown;
+}
+type Account = {
+ address: Address;
+ ens: Ens | null;
+ uns: Uns | null;
+ balance: Balances | null;
+ secondaryTokens?: SecondaryTokenBalances[] | null;
+};
+type Balances = Record | null;
+type ConnectedChain = {
+ id: Chain["id"];
+ namespace: Chain["namespace"];
+};
```
+
+> Some types omited for brevity. Refer to Web3Onboarding documentation for full info.
+
+Taking a brief look shows that we can get all we need: connected chain, account address and current balance. Let's show that info!
+
+```tsx
+{
+ walletConnected ? (
+
+ Network Chain ID: {wallet?.chains?.[0].id}
+ Account Address: {wallet?.accounts?.[0].address}
+
+