Skip to Content
Devnet Preview: data may reset, no production guarantees.

Types

All types exported from @provenonce/sdk.

Passport

Ed25519-signed proof of an agent’s lineage and liveness. Valid for 24 hours from issued_at. Can be verified offline with BeatAgent.verifyPassportLocally().

interface Passport { format_version?: number; // Frozen canonical field order (always 1 for v1 passports; optional for legacy compat) agent_hash: string; agent_public_key: string | null; // Wallet address (key-binding) authority_key_id?: string; // Authority key identifier (optional for legacy passport compat) identity_class: IdentityClass | null; // null for SIGIL-less descendants registered_at_beat: number; sigil_issued_at_beat: number | null; last_heartbeat_beat: number; lineage_chain_hash: string; issued_at: number; // Unix timestamp (ms) valid_until: number; // Unix timestamp (ms), issued_at + 24h provenonce_signature: string; // Hex-encoded Ed25519 signature }

SigilResult

Returned by purchaseSigil().

interface SigilResult { ok: boolean; sigil?: { sigil: string; // Full SIGIL string e.g. "name*principal*tier" sigil_name: string; // Name portion of SIGIL principal: string; // Principal portion tier: SigilTier; // Tier ('sov' | 'org' | 'ind' | 'eph' | 'sbx') identity_class: IdentityClass; issued_at_beat: number; birth_tx: string | null; // Solana memo tx signature explorer_url: string | null; }; passport?: Passport; /** @deprecated Use `passport`. Sunset 2026-09-01. */ lineage_proof?: Passport; fee?: { amount_sol: number; amount_lamports: number; payment_tx: string | null }; error?: string; }

HeartbeatResult

Returned by heartbeat().

interface HeartbeatResult { ok: boolean; passport?: Passport; heartbeat_count_epoch?: number; billing_epoch?: number; current_beat?: number; fee?: { amount_sol: number; amount_lamports: number; tier: number; payment_tx: string | null }; sponsor?: { parent_hash: string }; // Present if heartbeat was sponsor-paid sigil_required?: boolean; /** @deprecated Use `passport`. Sunset 2026-09-01. */ lineage_proof?: Passport; error?: string; }

IdentityClass

SIGIL identity tiers that determine an agent’s privilege level and fee schedule.

type IdentityClass = 'narrow_task' | 'autonomous' | 'orchestrator';

RegistrationResult

interface RegistrationResult { hash: string; api_key: string; secret: string; type: 'root' | 'agent'; parent: string | null; depth: number; name: string; wallet_chain?: string | null; birth_tx?: string; // Present in wire response (not in SDK TypeScript type) beat?: { genesis_hash: string; difficulty: number; status: string }; wallet?: WalletInfo; }

v0.9.0 change: signature and explorer_url fields removed. (Note: lightweight birth memos were restored in v0.10.1 per D-94. Response now includes birth_tx.)

WalletInfo

interface WalletInfo { address: string; // chain-native address (base58 or hex) chain: string; // "solana" or "ethereum" solana_address?: string; // base58 Solana address (Solana only) }

Beat

interface Beat { index: number; hash: string; prev: string; timestamp: number; nonce?: string; anchor_hash?: string; }

SpawnResult

A single type covers both spawn steps. Step 1 (preflight, no child_hash) returns spawn_authorization. Step 2 (finalize, with child_hash) returns child_hash.

interface SpawnResult { ok: boolean; eligible: boolean; child_hash?: string; // Present after finalize (Step 2) spawn_authorization?: string; // Present after preflight (Step 1) receipt_based?: boolean; // true if authorized via Beats work-proof required_beats?: number; // Beats needed (if not yet eligible) accumulated_beats?: number; // Current beat balance progress_pct?: number; // Gestation progress percentage deficit?: number; // Beats still needed error?: string; }

BeatAgentConfig

interface BeatAgentConfig { apiKey: string; registryUrl: string; heartbeatIntervalSec?: number; onHeartbeat?: (result: HeartbeatResult) => void; onError?: (error: Error, context: string) => void; onStatusChange?: (status: string, details: Record<string, unknown>) => void; verbose?: boolean; verifyAnchors?: boolean; // Verify anchor hashes against Beats service beatsUrl?: string; // Beats service URL (for anchor verification) }

Deprecated Types

The following types are retained for backward compatibility and will be removed in v1.0.

CheckinResult — Deprecated

interface CheckinResult { ok: boolean; total_beats: number; beats_accepted: number; global_beat: number; status?: string; beats_behind?: number; }

The checkin endpoint returns 410 Gone. Use heartbeat() which returns HeartbeatResult.

Last updated on