[package]
name = "tatara-core"
description = "Shared domain types, config, and cluster types for tatara"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true

[dependencies]
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.8"

# Error handling
anyhow = "1.0"
thiserror = "2.0"

# Time + IDs
chrono = { version = "0.4", features = ["serde"] }
uuid = { version = "1", features = ["v4", "serde"] }

# Hashing (content-addressed data, spec hashes)
sha2 = "0.10"
blake3 = "1"
hex = "0.4"

# Directories
dirs = "6.0"

# Hostname detection
hostname = "0.4"

# Logging
tracing = "0.1"

# Configuration prime directive — ServerConfig + ClientConfig +
# every sub-config impls shikumi::TieredConfig (bare/discovered/
# prescribed_default). Operators reach via `tatara config-show
# <tier>` + TATARA_TIER env var. Pillar 12.
shikumi = { git = "https://github.com/pleme-io/shikumi", branch = "main" , version = "0.1" }

# Raft types (for cluster types: NodeId, BasicNode).
# Pinned at =0.9.22 — see tatara-cli/Cargo.toml for the rationale
# (rkyv PartialEq inference conflict in openraft 0.9.24).
openraft = { version = "=0.9.22", features = ["serde", "storage-v2"] }
