@sei-js/precompiles
Native functions from the EVM
Get started with @sei-js/precompiles in minutes
Install Dependencies
npm install @sei-js/precompiles viem
Create a Client
import { createPublicClient, http } from 'viem'; import { seiTestnet } from '@sei-js/precompiles/viem'; const client = createPublicClient({ chain: seiTestnet, transport: http() });
Query a Precompile
import { BANK_PRECOMPILE_ABI, BANK_PRECOMPILE_ADDRESS } from '@sei-js/precompiles/viem'; // Get SEI balance const balance = await client.readContract({ address: BANK_PRECOMPILE_ADDRESS, abi: BANK_PRECOMPILE_ABI, functionName: 'balance', args: ['0x...', 'usei'] }); console.log('Balance:', balance.toString());
Connect a Wallet (Optional)
import { createWalletClient, custom } from 'viem'; const walletClient = createWalletClient({ chain: seiTestnet, transport: custom(window.ethereum) });
import { createPublicClient, http, formatEther } from 'viem'; import { seiTestnet, BANK_PRECOMPILE_ABI, BANK_PRECOMPILE_ADDRESS } from '@sei-js/precompiles/viem'; // Create client const publicClient = createPublicClient({ chain: seiTestnet, transport: http() }); // Get user's SEI balance async function getUserBalance(userAddress: string) { const balance = await publicClient.readContract({ address: BANK_PRECOMPILE_ADDRESS, abi: BANK_PRECOMPILE_ABI, functionName: 'balance', args: [userAddress, 'usei'] }); return formatEther(balance); } // Usage const userAddress = '0x...'; const balance = await getUserBalance(userAddress); console.log(`Balance: ${balance} SEI`);
Was this page helpful?