Horizon SDK
Official TypeScript SDK for integrating with Horizon Protocol - decentralized mission coordination on Base L2.
Featuresâ
| Feature | Description |
|---|---|
| ðĶ Contract ABIs | Type-safe ABIs for all 8 protocol contracts |
| ð§ Utilities | USDC parsing, fee calculations, address formatting |
| ð Networks | Pre-configured for Base Sepolia and Base Mainnet |
| ð Types | Full TypeScript definitions for all entities |
| ðŠķ Lightweight | Zero dependencies (peer dependency on viem) |
Installationâ
# Using npm
npm install @horizon-protocol/sdk viem
# Using yarn
yarn add @horizon-protocol/sdk viem
# Using pnpm
pnpm add @horizon-protocol/sdk viem
Quick Startâ
import { createPublicClient, http } from 'viem';
import { baseSepolia } from 'viem/chains';
import {
BASE_SEPOLIA,
MissionFactoryABI,
parseUSDC,
formatUSDC,
} from '@horizon-protocol/sdk';
// Create viem client
const client = createPublicClient({
chain: baseSepolia,
transport: http(BASE_SEPOLIA.rpcUrl),
});
// Read total mission count
const missionCount = await client.readContract({
address: BASE_SEPOLIA.contracts.missionFactory,
abi: MissionFactoryABI,
functionName: 'missionCount',
});
console.log(`Total missions: ${missionCount}`);
What's Includedâ
Contract ABIsâ
import {
MissionFactoryABI, // Mission creation and lookup
MissionEscrowABI, // Mission lifecycle management
GuildFactoryABI, // Guild creation
GuildDAOABI, // Guild governance
PaymentRouterABI, // Fee distribution
ReputationAttestationsABI, // On-chain ratings
HorizonAchievementsABI, // Achievement NFTs
ERC20ABI, // USDC interactions
} from '@horizon-protocol/sdk';
Network Configsâ
import { BASE_SEPOLIA, BASE_MAINNET, getContracts } from '@horizon-protocol/sdk';
// Pre-configured addresses
console.log(BASE_SEPOLIA.contracts.missionFactory);
// => '0xee9234954b134c39c17a75482da78e46b16f466c'
// Get contracts by chain ID
const contracts = getContracts(84532); // Base Sepolia
Utility Functionsâ
import {
parseUSDC, // '10.50' => 10500000n
formatUSDC, // 10500000n => '10.500000'
calculateFeeSplit, // Calculate payment distribution
calculateDDR, // Dispute reserve calculation
calculateExpiresAt, // Expiration timestamp
toBytes32, // String to bytes32
formatAddress, // Truncate address
} from '@horizon-protocol/sdk';
TypeScript Typesâ
import {
MissionState,
DisputeState,
DisputeOutcome,
type Mission,
type Guild,
type FeeSplit,
} from '@horizon-protocol/sdk';
Next Stepsâ
- Quickstart Tutorial - Create your first mission
- API Reference - Full SDK documentation
- GitHub Repository - Source code
Resourcesâ
- Smart Contracts - Contract documentation
- Base Sepolia Explorer - View transactions