2.1.0 • Published 10 months ago

@sei-js/precompiles v2.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

@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.

📦 Installation

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

Peer Dependencies

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

🚀 Quick Start

With Viem

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']
})

With Ethers.js

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')

📋 Available Precompiles

PrecompileAddressDescription
Bank0x0000000000000000000000000000000000001001Token operations and balance management
Oracle0x0000000000000000000000000000000000001002Price feeds and TWAP data
JSON0x0000000000000000000000000000000000001003JSON parsing utilities
Address0x0000000000000000000000000000000000001004Address association between EVM and Cosmos
Staking0x0000000000000000000000000000000000001005Validator operations and delegation
Governance0x0000000000000000000000000000000000001006Voting and proposal management
Distribution0x0000000000000000000000000000000000001007Reward distribution and claiming
IBC0x0000000000000000000000000000000000001009Cross-chain transfers
Pointerview0x000000000000000000000000000000000000100AToken pointer queries
Pointer0x000000000000000000000000000000000000100BToken pointer creation
Confidential Transfers0x0000000000000000000000000000000000001010Privacy-preserving transactions
WASM0x0000000000000000000000000000000000001002CosmWasm contract interaction

📖 Documentation

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

📚 Complete Documentation →

Quick Links

🏗️ Usage Examples

Bank Precompile - Token Operations

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]
})

Oracle Precompile - Price Data

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']
})

Staking Precompile - Validator Operations

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]
})

🆘 Support

2.1.0

10 months ago