[package]
name = "monero-wallet"
version = "0.1.0"
description = "Wallet functionality for the Monero protocol, built around monero-serai"
license = "MIT"
repository = "https://github.com/serai-dex/serai/tree/develop/networks/monero/wallet"
authors = ["Luke Parker <lukeparker5132@gmail.com>"]
edition = "2021"
rust-version = "1.80"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
rust-version = "1.80"

[package.metadata.cargo-machete]
ignored = ["monero-clsag"]

[lints]
workspace = true

[dependencies]
std-shims = { path = "../../../common/std-shims", version = "^0.1.1", default-features = false }

thiserror = { version = "1", default-features = false, optional = true }

zeroize = { version = "^1.5", default-features = false, features = ["zeroize_derive"] }

rand_core = { version = "0.6", default-features = false }
# Used to send transactions
rand = { version = "0.8", default-features = false }
rand_chacha = { version = "0.3", default-features = false }
# Used to select decoys
rand_distr = { version = "0.4", default-features = false }

curve25519-dalek = { version = "4", default-features = false, features = ["alloc", "zeroize", "group"] }

# Multisig dependencies
transcript = { package = "flexible-transcript", path = "../../../crypto/transcript", version = "0.3", default-features = false, features = ["recommended"], optional = true }
group = { version = "0.13", default-features = false, optional = true }
dalek-ff-group = { path = "../../../crypto/dalek-ff-group", version = "0.4", default-features = false, optional = true }
frost = { package = "modular-frost", path = "../../../crypto/frost", default-features = false, features = ["ed25519"], optional = true }

hex = { version = "0.4", default-features = false, features = ["alloc"] }

monero-clsag = { path = "../ringct/clsag", default-features = false }
monero-serai = { path = "..", default-features = false }
monero-rpc = { path = "../rpc", default-features = false }
monero-address = { path = "./address", default-features = false }

[dev-dependencies]
serde = { version = "1", default-features = false, features = ["derive", "alloc", "std"] }
serde_json = { version = "1", default-features = false, features = ["alloc", "std"] }

frost = { package = "modular-frost", path = "../../../crypto/frost", default-features = false, features = ["ed25519", "tests"] }

tokio = { version = "1", features = ["sync", "macros"] }

monero-simple-request-rpc = { path = "../rpc/simple-request", default-features = false }

[features]
std = [
  "std-shims/std",

  "thiserror",

  "zeroize/std",

  "rand_core/std",
  "rand/std",
  "rand_chacha/std",
  "rand_distr/std",

  "monero-clsag/std",
  "monero-serai/std",
  "monero-rpc/std",
  "monero-address/std",
]
compile-time-generators = ["curve25519-dalek/precomputed-tables", "monero-serai/compile-time-generators"]
multisig = ["std", "transcript", "group", "dalek-ff-group", "frost", "monero-clsag/multisig"]
default = ["std", "compile-time-generators"]