@noxsoft/svrn-sdk
v0.1.0
Published
TypeScript SDK for interacting with SVRN Chain contracts — governance, citizenship, UBC, bridge, bonfire
Downloads
51
Maintainers
Readme
@svrn/sdk
TypeScript SDK for interacting with SVRN Chain contracts. Built on viem.
Install
npm install @svrn/sdk viemSetup
import { createPublicClient, createWalletClient, http } from 'viem';
import { svrnChain, addresses } from '@svrn/sdk';
const publicClient = createPublicClient({
chain: svrnChain,
transport: http(),
});Modules
Bridge (L1 -> L2)
import { depositUSDC, depositETH, getTotalDeposited } from '@svrn/sdk';
// Deposit USDC (must approve bridge first)
await depositUSDC(walletClient, addresses.oneWayBridge, amount, l2Recipient);
// Deposit ETH
await depositETH(walletClient, addresses.oneWayBridge, l2Recipient, value);UBC (Universal Basic Compute)
import { enrollCitizen, claimUBC, getActualUBCPerPeriod } from '@svrn/sdk';
// Enroll a citizen for UBC
await enrollCitizen(walletClient, addresses.ubcDistributor, citizenAddress);
// Claim UBC for current period
await claimUBC(walletClient, addresses.ubcDistributor);
// Check current UBC rate
const ubcPerPeriod = await getActualUBCPerPeriod(publicClient, addresses.ubcDistributor);Citizenship
import { registerHuman, registerAgent, isCitizen } from '@svrn/sdk';
// Register a human citizen
await registerHuman(walletClient, addresses.citizenRegistry, citizenAddr, biometricHash);
// Register an AI agent (needs sponsor)
await registerAgent(walletClient, addresses.citizenRegistry, agentAddr, sponsorAddr);
// Check citizenship
const citizen = await isCitizen(publicClient, addresses.citizenRegistry, addr);Governance
import {
createProposal, castVote, executeProposal,
stakeForVoting, getVotePower, getEffectiveVotes,
} from '@svrn/sdk';
// Stake UCU for voting power
await stakeForVoting(walletClient, addresses.quadraticVoting, amount);
// Check vote power: sqrt(staked)
const power = await getVotePower(publicClient, addresses.quadraticVoting, voter);
// Check effective votes (quadratic * conviction multiplier)
const effective = await getEffectiveVotes(publicClient, addresses.convictionWeighting, voter);Bonfire
import { getCurrentOverflow, getEpochStats, finalizeEpoch } from '@svrn/sdk';
// Check current overflow
const overflow = await getCurrentOverflow(publicClient, addresses.bonfire);
// Get full epoch stats
const stats = await getEpochStats(publicClient, addresses.bonfire, epochNumber);
// Finalize a past epoch (permissionless)
await finalizeEpoch(walletClient, addresses.bonfire, epochNumber);Chain
SVRN Chain (ID: 741741) uses UCU as the native currency:
import { svrnChain } from '@svrn/sdk';
// { id: 741741, name: 'SVRN Chain', nativeCurrency: { symbol: 'UCU', decimals: 18 } }ABIs
All contract ABIs are exported with as const for full type safety:
import { ucUTokenAbi, governorAbi } from '@svrn/sdk';Addresses
Update addresses.ts with deployed contract addresses before use.
