This document covers the core API primitives available in tetcore-primitives.
pub type AccountId = Address;pub struct AccountData {
pub balance: TokenBalance,
pub nonce: u64,
pub storage: Vec<u8>,
pub code_hash: Option<Hash32>,
}pub struct TransactionV1 {
pub sender: Address,
pub nonce: u64,
pub action: TransactionAction,
pub payload: Vec<u8>,
pub gas_limit: u64,
pub gas_price: u128,
pub value: u128,
pub signature: Option<Signature>,
}Call(Address)- Standard callCallReadOnly(Address)- View callCreate- Deploy contractCreate2 { code_hash, salt }- Deterministic deployInvoke { module, method }- Module dispatchSubmitPrompt { model_id, version, prompt_commitment }- Inference requestSubmitReceipt { prompt_id, inference_output }- Inference responseRegisterModel { shard_root, shard_count }- Model registrationTransfer(Address)- Token transferStakeVault { vault_id, amount }- Vault stakingSubmitProposal { proposal_type, payload }- GovernanceBatch(Vec<TransactionAction>)- Batched calls
pub struct Model {
pub model_id: Hash32,
pub owner: Address,
pub version: u32,
pub shard_root: Hash32,
pub shard_count: u32,
pub state: ModelState,
pub pricing_policy: PricingPolicy,
pub revenue_split: RevenueSplit,
}pub enum ModelState {
Registered,
Active,
Paused,
Deprecated,
Disabled,
}pub struct Prompt { ... }
pub struct Receipt { ... }pub type TokenBalance = u128;
pub const DECIMALS: u8 = 18;pub struct GasSchedule {
pub static_gas: u64,
pub per_byte_gas: u64,
// ... more fields
}pub struct Vault { ... }
pub struct Escrow { ... }pub struct Proposal {
pub id: Hash32,
pub proposer: Address,
pub proposal_type: ProposalType,
pub payload: Vec<u8>,
pub status: ProposalStatus,
pub votes: Vec<Vote>,
pub created_at: u64,
}pub enum ProposalType {
ParameterChange,
RuntimeUpgrade,
Treasury,
Emergency,
}pub struct Header {
pub parent_hash: Hash32,
pub number: u64,
pub state_root: Hash32,
pub transaction_root: Hash32,
pub receipts_root: Hash32,
pub validator_set_id: u64,
pub timestamp: u64,
}pub struct ValidatorSet {
pub validators: Vec<Validator>,
pub total_stake: u128,
}pub enum Event {
System(SystemEvent),
Balances(BalanceEvent),
Inference(InferenceEvent),
Contracts(ContractEvent),
Governance(GovernanceEvent),
Vault(VaultEvent),
}pub struct FixedU128 {
raw: u128,
decimals: u8,
}
// 18-decimal fixed point
// Use for precise token calculationspub struct Perbill(u32); // Parts per billion
pub struct PerU16(u16); // Parts per 65535pub struct Gas { gas: u64 }
// Metered resource trackingpub struct ValidatorInfo {
pub account_id: Address,
pub stake: u128,
pub commission: u8,
pub active: bool,
pub discovered_at: u64,
pub last_heartbeat: u64,
pub peer_id: Option<String>,
pub listen_addresses: Vec<String>,
pub endpoint: Option<ValidatorEndpoint>,
}pub struct ValidatorEndpoint {
pub rpc_address: String,
pub p2p_address: String,
pub wasm_runtime: Option<String>,
pub api_versions: Vec<ApiVersion>,
}pub struct DiscoveryRequest {
pub requester: Address,
pub request_type: DiscoveryRequestType,
pub max_results: u32,
pub filter: Option<DiscoveryFilter>,
}
pub struct DiscoveryResponse {
pub request_id: Hash32,
pub validators: Vec<ValidatorInfo>,
pub total_found: u32,
pub block_number: u64,
}pub struct ValidatorPerformance {
pub account_id: Address,
pub blocks_proposed: u64,
pub blocks_authored: u64,
pub votes_cast: u64,
pub missed_blocks: u64,
pub uptime_percentage: u32,
pub last_evaluated: u64,
}pub struct ValidatorRegistry {
pub entries: Vec<ValidatorInfo>,
pub next_set_id: u64,
}pub struct BlockBuilder {
pub parent_hash: Hash32,
pub number: u64,
pub timestamp: u64,
pub transactions: Vec<Transaction>,
pub receipts: Vec<Receipt>,
pub gas_used: u64,
pub size_bytes: u32,
pub digest: Digest,
pub config: BlockBuilderConfig,
}pub struct BlockBuilderConfig {
pub max_gas: u64,
pub max_transactions: u32,
pub max_size_bytes: u32,
pub min_timestamp: Option<u64>,
}pub enum BlockBuilderError {
TooManyTransactions,
BlockTooBig,
GasExceeded,
InvalidTransaction,
SealAlreadySet,
}pub struct BuildableBlock {
pub header: Header,
pub transactions: Vec<Transaction>,
pub receipts: Vec<Receipt>,
}pub struct SealedBlock {
pub header: Header,
pub transactions: Vec<Transaction>,
pub receipts: Vec<Receipt>,
pub signature: Option<Signature>,
}pub struct BlockStats {
pub transaction_count: u32,
pub gas_used: u64,
pub storage_read_count: u64,
pub storage_write_count: u64,
pub event_count: u32,
pub size_bytes: u32,
}pub struct ChainConfig {
pub chain_id: u32,
pub chain_name: String,
pub chain_type: ChainType,
pub genesis_hash: Hash32,
pub fork_config: ForkConfig,
}pub struct ChainStorage {
pub blocks: HashMap<Hash32, ChainBlock>,
pub block_by_number: HashMap<u64, Hash32>,
pub best_hash: Hash32,
pub best_number: u64,
pub genesis_hash: Hash32,
}pub struct ForkChoice {
pub latest_finalized_hash: Hash32,
pub latest_finalized_number: u64,
pub best_chain: Vec<Hash32>,
}pub struct ImportResult {
pub hash: Hash32,
pub number: u64,
pub is_new_best: bool,
pub is_finalized: bool,
}
pub enum ImportErrorKind {
UnknownBlock,
MissingParent,
BlockInFuture,
InvalidStateRoot,
InvalidTransactionsRoot,
InvalidReceiptsRoot,
InvalidSignature,
BadNonce,
InsufficientBalance,
GasLimitExceeded,
FullBlock,
ForkChoiceChanged,
}pub struct SyncState {
pub starting_block: u64,
pub current_block: u64,
pub highest_block: Option<u64>,
pub sync_type: SyncType,
}