Module precompiles

@sei-js/precompiles

npm version License: MIT

TypeScript utilities and helpers for interacting with Sei's precompile contracts. Provides seamless integration with popular Ethereum development tools like Viem and Ethers.js, offering typed interfaces, contract factories, ABI's, contract addresses, and utilities specifically designed for Sei's precompile ecosystem.

npm install @sei-js/precompiles
yarn add @sei-js/precompiles
pnpm add @sei-js/precompiles

This package requires either ethers (v6+) or viem (v2+) as peer dependencies:

# For Ethers.js users
npm install ethers@^6.0.0

# For Viem users
npm install viem@^2.0.0
import { createPublicClient, http } from 'viem'
import { seiMainnet } from '@sei-js/precompiles/viem'
import { BANK_PRECOMPILE_ADDRESS, bankPrecompileAbi } from '@sei-js/precompiles'

const client = createPublicClient({
chain: seiMainnet,
transport: http()
})

// Read token balance
const balance = await client.readContract({
address: BANK_PRECOMPILE_ADDRESS,
abi: bankPrecompileAbi,
functionName: 'balance',
args: ['0x...', 'usei']
})
import { ethers } from 'ethers'
import { getBankPrecompileEthersV6Contract } from '@sei-js/precompiles/ethers'

const provider = new ethers.JsonRpcProvider('https://evm-rpc.sei-apis.com')
const bankContract = getBankPrecompileEthersV6Contract(provider)

// Read token balance
const balance = await bankContract.balance('0x...', 'usei')
Precompile Address Description
Bank 0x0000000000000000000000000000000000001001 Token operations and balance management
Oracle 0x0000000000000000000000000000000000001002 Price feeds and TWAP data
JSON 0x0000000000000000000000000000000000001003 JSON parsing utilities
Address 0x0000000000000000000000000000000000001004 Address association between EVM and Cosmos
Staking 0x0000000000000000000000000000000000001005 Validator operations and delegation
Governance 0x0000000000000000000000000000000000001006 Voting and proposal management
Distribution 0x0000000000000000000000000000000000001007 Reward distribution and claiming
IBC 0x0000000000000000000000000000000000001009 Cross-chain transfers
Pointerview 0x000000000000000000000000000000000000100A Token pointer queries
Pointer 0x000000000000000000000000000000000000100B Token pointer creation
Confidential Transfers 0x0000000000000000000000000000000000001010 Privacy-preserving transactions
WASM 0x0000000000000000000000000000000000001002 CosmWasm contract interaction

For comprehensive guides, examples, and API reference, visit our documentation:

📚 Complete Documentation →

import { BANK_PRECOMPILE_ADDRESS, bankPrecompileAbi } from '@sei-js/precompiles'

// Send tokens
await writeContract({
address: BANK_PRECOMPILE_ADDRESS,
abi: bankPrecompileAbi,
functionName: 'send',
args: [fromAddress, toAddress, 'usei', amount]
})
import { ORACLE_PRECOMPILE_ADDRESS, oraclePrecompileAbi } from '@sei-js/precompiles'

// Get exchange rate
const rate = await readContract({
address: ORACLE_PRECOMPILE_ADDRESS,
abi: oraclePrecompileAbi,
functionName: 'getExchangeRate',
args: ['ATOM']
})
import { STAKING_PRECOMPILE_ADDRESS, stakingPrecompileAbi } from '@sei-js/precompiles'

// Delegate to validator
await writeContract({
address: STAKING_PRECOMPILE_ADDRESS,
abi: stakingPrecompileAbi,
functionName: 'delegate',
args: [validatorAddress, amount]
})

ABI

ADDRESS_PRECOMPILE_ABI
BANK_PRECOMPILE_ABI
CONFIDENTIAL_TRANSFERS_PRECOMPILE_ABI
DISTRIBUTION_PRECOMPILE_ABI
ETHERS_ADDRESS_PRECOMPILE_ABI
ETHERS_BANK_PRECOMPILE_ABI
ETHERS_CONFIDENTIAL_TRANSFERS_PRECOMPILE_ABI
ETHERS_DISTRIBUTION_PRECOMPILE_ABI
ETHERS_GOVERNANCE_PRECOMPILE_ABI
ETHERS_IBC_PRECOMPILE_ABI
ETHERS_JSON_PRECOMPILE_ABI
ETHERS_ORACLE_PRECOMPILE_ABI
ETHERS_POINTER_PRECOMPILE_ABI
ETHERS_POINTERVIEW_PRECOMPILE_ABI
ETHERS_STAKING_PRECOMPILE_ABI
ETHERS_WASM_PRECOMPILE_ABI
GOVERNANCE_PRECOMPILE_ABI
IBC_PRECOMPILE_ABI
JSON_PRECOMPILE_ABI
ORACLE_PRECOMPILE_ABI
POINTER_PRECOMPILE_ABI
POINTERVIEW_PRECOMPILE_ABI
SOLO_PRECOMPILE_ABI
STAKING_PRECOMPILE_ABI
VIEM_ADDRESS_PRECOMPILE_ABI
VIEM_BANK_PRECOMPILE_ABI
VIEM_CONFIDENTIAL_TRANSFERS_PRECOMPILE_ABI
VIEM_DISTRIBUTION_PRECOMPILE_ABI
VIEM_GOVERNANCE_PRECOMPILE_ABI
VIEM_IBC_PRECOMPILE_ABI
VIEM_JSON_PRECOMPILE_ABI
VIEM_ORACLE_PRECOMPILE_ABI
VIEM_POINTER_PRECOMPILE_ABI
VIEM_POINTERVIEW_PRECOMPILE_ABI
VIEM_SOLO_PRECOMPILE_ABI
VIEM_STAKING_PRECOMPILE_ABI
VIEM_WASM_PRECOMPILE_ABI
WASM_PRECOMPILE_ABI

Address

ADDRESS_PRECOMPILE_ADDRESS
BANK_PRECOMPILE_ADDRESS
CONFIDENTIAL_TRANSFERS_PRECOMPILE_ADDRESS
DISTRIBUTION_PRECOMPILE_ADDRESS
GOVERNANCE_PRECOMPILE_ADDRESS
IBC_PRECOMPILE_ADDRESS
JSON_PRECOMPILE_ADDRESS
ORACLE_PRECOMPILE_ADDRESS
POINTER_PRECOMPILE_ADDRESS
POINTERVIEW_PRECOMPILE_ADDRESS
SOLO_PRECOMPILE_ADDRESS
STAKING_PRECOMPILE_ADDRESS
WASM_PRECOMPILE_ADDRESS

Chain

seiLocal

Contract Factory

getAddressPrecompileEthersV6Contract
getBankPrecompileEthersV6Contract
getConfidentialTransfersPrecompileEthersV6Contract
getDistributionPrecompileEthersV6Contract
getGovernancePrecompileEthersV6Contract
getIbcPrecompileEthersV6Contract
getJSONPrecompileEthersV6Contract
getOraclePrecompileEthersV6Contract
getPointerPrecompileEthersV6Contract
getPointerviewPrecompileEthersV6Contract
getStakingPrecompileEthersV6Contract
getWasmPrecompileEthersV6Contract