[package]
name = "kimberlite"
description = "Kimberlite - Compliance-native database for regulated industries"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true

[lints]
workspace = true

[features]
default = []
broadcast = ["dep:tokio", "dep:serde"]
# Adds `Kimberlite::reset_state` for libFuzzer persistent-mode
# targets. MUST NOT be enabled in production builds — reset wipes all
# persisted state.
fuzz-reset = [
    "kimberlite-storage/fuzz-reset",
    "kimberlite-store/fuzz-reset",
]

[dependencies]
# Internal crates (foundation layer)
kimberlite-types.workspace = true
kimberlite-crypto.workspace = true
kimberlite-storage.workspace = true
kimberlite-kernel.workspace = true
kimberlite-directory.workspace = true

# Internal crates (data layer)
kimberlite-store.workspace = true
kimberlite-query.workspace = true

# Internal crates (compliance & access control)
kimberlite-rbac.workspace = true
kimberlite-compliance.workspace = true
kimberlite-abac.workspace = true

# SQL parsing (for RBAC query rewriting)
sqlparser.workspace = true

# UUIDs (consent management)
uuid.workspace = true

# Time (for compliance deadline checks)
chrono = { workspace = true, features = ["serde"] }

# Core
thiserror.workspace = true
bytes.workspace = true
tracing.workspace = true
serde_json.workspace = true
sha2.workspace = true

# Optional: for broadcast feature (Studio UI events)
tokio = { workspace = true, optional = true, features = ["sync"] }
serde = { workspace = true, optional = true, features = ["derive"] }

[dev-dependencies]
tempfile.workspace = true
