[package]
name = "btctax-core"
version = "0.3.0"
edition.workspace = true
license.workspace = true
description = "Offline US Bitcoin tax engine — per-lot cost basis, realized gains, and IRS-form projection (part of btctax)."
repository.workspace = true
homepage.workspace = true
keywords.workspace = true
categories = ["finance"]

[dependencies]
# Exact decimal money (NFR5). serde-str = (de)serialize Decimal as a string for lossless JSON round-trips.
rust_decimal = { version = "1.36", default-features = false, features = ["serde-str", "std"] }
rust_decimal_macros = "1.36"             # dec! macro — used in production code for NIIT_RATE const (tables.rs)
# UTC instants + fixed-offset calendar dates (§6.1). serde-well-known = RFC3339 (de)serializers.
time = { version = "0.3", features = ["serde-well-known", "macros", "parsing", "formatting"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
sha2 = "0.10"               # canonical content fingerprint for conflict detection (§6.2/§9)
rusqlite = { version = "0.31", features = ["bundled"] }   # persistence glue ONLY; same pin as btctax-store
thiserror = "1"

[dev-dependencies]
rust_decimal_macros = "1.36"
proptest = "1"
