EVVM TypeScript Library Introduction
The @evvm/viem-signature-library is the official TypeScript library for building EVVM applications. It provides type-safe signature construction, contract interaction, and transaction management for all EVVM services.
Core Features
- Payment Operations: Individual and multi-recipient transactions
- Identity Management: Username registration, offers, and metadata
- Staking Functions: Golden, public, and presale staking
- Generic Builders: Custom service signature construction
- Full Type Safety: Complete TypeScript integration with viem/wagmi
Universal Signature Format
All EVVM operations follow the standardized message format:
evvmID,functionName,param1,param2,...,paramN
The library automatically constructs these messages and handles EIP-191 signing, eliminating manual formatting.
Architecture Overview
The library consists of four main modules:
Signature Builders
EVVMSignatureBuilder- Payment operationsNameServiceSignatureBuilder- Identity managementStakingSignatureBuilder- Staking operationsGenericSignatureBuilder- Custom services
Additional Modules
- Types: TypeScript definitions for all operations
- Utils: Message construction and hashing utilities
- ABI: Contract interfaces for direct interaction
Quick Start Examples
Payment Transaction
import { EVVMSignatureBuilder } from '@evvm/viem-signature-library';
const builder = new EVVMSignatureBuilder(walletClient, account);
const signature = await builder.signPay(
evvmID, recipient, token, amount, fee, nonce, priority, executor
);
Username Registration
import { NameServiceSignatureBuilder } from '@evvm/viem-signature-library';
const nameBuilder = new NameServiceSignatureBuilder(walletClient, account);
const { paySignature, actionSignature } = await nameBuilder.signRegistrationUsername(
evvmID, nameServiceAddress, username, clowNumber, nonce,
reward, priorityFee, evvmNonce, priorityFlag
);
Staking Operation
import { StakingSignatureBuilder } from '@evvm/viem-signature-library';
const stakingBuilder = new StakingSignatureBuilder(walletClient, account);
const { paySignature, actionSignature } = await stakingBuilder.signPublicStaking(
evvmID, stakingAddress, true, amount, nonce, price, fee, evvmNonce, priority
);
Installation
npm install @evvm/viem-signature-library
Key Benefits
- Automatic Message Construction: No manual formatting required
- Dual Signature Support: Handles complex service + payment patterns
- Type Safety: Full TypeScript integration prevents runtime errors
- Modular Design: Import only needed functionality
- Battle Tested: Production-ready with comprehensive validation
The library implements all EVVM patterns documented in the Signature Structures section, providing a seamless bridge between documentation and working code.