[package]
name = "armour-core"
version = "0.1.0"
authors = ["Rail Khusnutdinov <rail@33.run>"]
description = "Core types for armour ecosystem"
license = "MIT OR Apache-2.0"
edition = "2024"

[features]
default = ["std"]
std = ["thiserror", "serde/derive", "parking_lot", "serde_json", "time/std", "time/serde-human-readable", "arrayvec/serde", "dep:bytes", "dep:rand"]
solana = ["solana-pubkey", "solana-signature"]
compact_str = ["dep:compact_str"]
smol_str = ["dep:smol_str"]
rust_decimal = ["dep:rust_decimal"]
rkyv = ["dep:rkyv", "rkyv/std", "rkyv/alloc", "rkyv/bytecheck"]
bytemuck = ["dep:bytemuck"]
bitcode = ["dep:bitcode"]
ts-rs = ["dep:ts-rs"]
facet = ["dep:facet"]
fake = ["dep:fake"]

[dependencies]
rapira = "0.12"
blowfish_rs = "0.1"
rend = { version = "0.5", features = ["zerocopy-0_8", "bytemuck-1"] }
zerocopy = { version = "0.8", features = ["derive"] }
arrayvec = "0.7"
smallvec = { version = "1.10", optional = true, features = [
    "union",
    "const_generics",
    "const_new",
    "serde",
] }
data-encoding = "2.4"
data-encoding-macro = "0.1"
const-decoder = "0.4"
const-fnv1a-hash = "1.1"
xxhash-rust = { version = "0.8", features = ["xxh3"] }
uuid = { version = "1.3", default-features = false }
time = { version = "0.3", default-features = false }
serde = { version = "1.0" }
serde_json = { version = "1.0", optional = true }
parking_lot = { version = "0.12", optional = true }
thiserror = { version = "2.0", optional = true }
tracing = "0.1"

# optional
bytes = { version = "1.5", optional = true }
rand = { version = "0.10", optional = true }
rust_decimal = { version = "1.30", optional = true }
compact_str = { version = "0.9", optional = true }
smol_str = { version = "0.3", optional = true }
solana-pubkey = { version = "4.0", optional = true }
solana-signature = { version = "3.1", optional = true }
rkyv = { version = "0.8", default-features = false, features = [], optional = true }
bytemuck = { version = "1.23", optional = true, features = ["derive", "extern_crate_alloc"] }
bitcode = { version = "0.6", optional = true }
ts-rs = { version = "12.0", optional = true, features = ["no-serde-warnings"] }
facet = { version = "0.44", optional = true }
fake = { version = "4.4", optional = true }
