diff --git a/chain-registry b/chain-registry index acdf9429..62805ea4 160000 --- a/chain-registry +++ b/chain-registry @@ -1 +1 @@ -Subproject commit acdf9429184c44634ffe57194324935b753ddb7e +Subproject commit 62805ea44e50276fc4105684aa190904f7795837 diff --git a/initia-registry b/initia-registry index 1a1b33f8..c510fb1b 160000 --- a/initia-registry +++ b/initia-registry @@ -1 +1 @@ -Subproject commit 1a1b33f84c5a32b1e9af80df1ab50a318ddb7c44 +Subproject commit c510fb1b0825e67e553e9d4801b4657618e10f69 diff --git a/src/config/endpoints.js b/src/config/endpoints.js index d44da073..9649ae64 100644 --- a/src/config/endpoints.js +++ b/src/config/endpoints.js @@ -152,6 +152,7 @@ exports.WHITELABEL_CHAIN_IDS = { "dimension_37-1": true, "coreum-mainnet-1": true, "haqq_11235-1": true, + "stride-internal-1": true, }; /** diff --git a/src/constants/wagmi.ts b/src/constants/wagmi.ts index 797ab6b9..64579861 100644 --- a/src/constants/wagmi.ts +++ b/src/constants/wagmi.ts @@ -1,3 +1,4 @@ +import { defineChain } from "viem"; import { arbitrum, arbitrumSepolia, @@ -24,6 +25,31 @@ import { sepolia, } from "wagmi/chains"; +export const forma = /*#__PURE__*/ defineChain({ + id: 984122, + name: "Forma Mainnet", + nativeCurrency: { name: "TIA", symbol: "TIA", decimals: 18 }, + rpcUrls: { + default: { + http: ["https://rpc.forma.art"], + }, + }, + blockExplorers: { + default: { + name: "Etherscan", + url: "https://lineascan.build", + apiUrl: "https://api.lineascan.build/api", + }, + }, + contracts: { + multicall3: { + address: "0xcA11bde05977b3631167028862bE2a173976CA11", + blockCreated: 42, + }, + }, + testnet: false, +}); + export const EVM_CHAINS: Chain[] = [ arbitrum, avalanche, @@ -47,4 +73,5 @@ export const EVM_CHAINS: Chain[] = [ arbitrumSepolia, blast, blastSepolia, + forma, ]; diff --git a/src/hooks/useBalancesByChain.ts b/src/hooks/useBalancesByChain.ts index 3b82482f..f8adffd2 100644 --- a/src/hooks/useBalancesByChain.ts +++ b/src/hooks/useBalancesByChain.ts @@ -98,6 +98,37 @@ export async function getEvmChainBalances( const chainAssets = assets[chainID]; + if (chainID === "984122") { + const balances: bigint[] = []; + + for (const asset of chainAssets) { + if (asset.tokenContract) { + const balance = await publicClient.readContract({ + address: asset.tokenContract as `0x${string}`, + abi: erc20Abi, + functionName: "balanceOf", + args: [address as `0x${string}`], + }); + + balances.push(balance); + } + + const balance = await publicClient.getBalance({ + address: address as `0x${string}`, + }); + + balances.push(balance); + } + + return chainAssets.reduce>( + (acc, asset, i) => ({ + ...acc, + [asset.denom]: balances[i].toString() || "0", + }), + {}, + ); + } + const balances = await publicClient.multicall({ multicallAddress: "0xcA11bde05977b3631167028862bE2a173976CA11", contracts: chainAssets.map((asset) => { @@ -118,6 +149,7 @@ export async function getEvmChainBalances( }; }), }); + return chainAssets.reduce>( (acc, asset, i) => ({ ...acc, diff --git a/src/lib/wagmi.ts b/src/lib/wagmi.ts index 50177eb0..7b80bbb4 100644 --- a/src/lib/wagmi.ts +++ b/src/lib/wagmi.ts @@ -25,6 +25,8 @@ import { sepolia, } from "wagmi/chains"; +import { forma } from "@/constants/wagmi"; + // Update EVM_CHAINS in src/constants/wagmi.ts as well export const config = createConfig({ chains: [ @@ -50,6 +52,7 @@ export const config = createConfig({ arbitrumSepolia, blast, blastSepolia, + forma, ], transports: { [arbitrum.id]: http(), @@ -74,5 +77,6 @@ export const config = createConfig({ [arbitrumSepolia.id]: http(), [blast.id]: http(), [blastSepolia.id]: http(), + [forma.id]: http(), }, }); diff --git a/src/utils/api.ts b/src/utils/api.ts index 96806619..61662313 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -35,6 +35,7 @@ export function createProxyHandler(type: "api" | "rpc", fallbackFn?: FallbackEnd } const uri = [data.endpoint, ...args].join("/"); + console.log(data, args); return fetch(uri, { body: req.body, headers,