Quick Start Guide
Get up and running with@sei-js/precompiles in just a few minutes. Choose your preferred approach below.
- Viem
- Ethers.js
- Other
Create a Client
Copy
Ask AI
import { createPublicClient, http } from 'viem';
import { seiTestnet } from '@sei-js/precompiles/viem';
const client = createPublicClient({
chain: seiTestnet,
transport: http()
});
Query a Precompile
Copy
Ask AI
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());
Complete Viem Example
Copy
Ask AI
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`);
Create a Provider
Copy
Ask AI
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider(
'https://evm-rpc-testnet.sei-apis.com'
);
Get Contract Instance
Copy
Ask AI
import { getBankPrecompileEthersContract } from '@sei-js/precompiles/ethers';
// Get contract instance with factory
const bankContract = getBankPrecompileEthersContract(provider);
Query the Contract
Copy
Ask AI
// Get user's SEI balance
async function getUserBalance(userAddress: string) {
const balance = await bankContract.balance(userAddress, 'usei');
return ethers.formatEther(balance);
}
const userAddress = '0x...';
const balance = await getUserBalance(userAddress);
console.log(`Balance: ${balance} SEI`);
Complete Ethers.js Example
Copy
Ask AI
import { ethers } from 'ethers';
import { getBankPrecompileEthersContract } from '@sei-js/precompiles/ethers';
// Create provider
const provider = new ethers.JsonRpcProvider(
'https://evm-rpc-testnet.sei-apis.com'
);
// Get contract instance
const bankContract = getBankPrecompileEthersContract(provider);
// Get user's SEI balance
async function getUserBalance(userAddress: string) {
const balance = await bankContract.balance(userAddress, 'usei');
return ethers.formatEther(balance);
}
// Usage
const userAddress = '0x...';
const balance = await getUserBalance(userAddress);
console.log(`Balance: ${balance} SEI`);
Import ABIs and Addresses
Copy
Ask AI
import {
BANK_PRECOMPILE_ABI,
BANK_PRECOMPILE_ADDRESS,
STAKING_PRECOMPILE_ABI,
STAKING_PRECOMPILE_ADDRESS,
ORACLE_PRECOMPILE_ABI,
ORACLE_PRECOMPILE_ADDRESS
} from '@sei-js/precompiles';
Use with Any Library
Copy
Ask AI
// Example with web3.js
import Web3 from 'web3';
const web3 = new Web3('https://evm-rpc-testnet.sei-apis.com');
const bankContract = new web3.eth.Contract(
BANK_PRECOMPILE_ABI,
BANK_PRECOMPILE_ADDRESS
);
// Get balance
const balance = await bankContract.methods
.balance('0x...', 'usei')
.call();