[package]
name = "solana-sdk"
description = "Solana SDK"
documentation = "https://docs.rs/solana-sdk"
readme = "README.md"
version = { workspace = true }
authors = { workspace = true }
repository = { workspace = true }
homepage = { workspace = true }
license = { workspace = true }
edition = { workspace = true }

[features]
# "program" feature is a legacy feature retained to support v1.3 and older
# programs.  New development should not use this feature.  Instead use the
# solana-program crate
program = []

default = [
  "full" # functionality that is not compatible or needed for on-chain programs
]
full = [
    "assert_matches",
    "byteorder",
    "chrono",
    "generic-array",
    "memmap2",
    "rand",
    "rand0-7",
    "serde_json",
    "ed25519-dalek",
    "ed25519-dalek-bip32",
    "solana-logger",
    "libsecp256k1",
    "sha3",
    "digest",
]
dev-context-only-utils = []

[dependencies]
assert_matches = { workspace = true, optional = true }
base64 = { workspace = true }
bincode = { workspace = true }
bitflags = { workspace = true }
borsh = { workspace = true }
bs58 = { workspace = true }
bytemuck = { workspace = true, features = ["derive"] }
byteorder = { workspace = true, optional = true }
chrono = { workspace = true, features = ["alloc"], optional = true }
curve25519-dalek = { workspace = true, optional = true }
derivation-path = { workspace = true }
digest = { workspace = true, optional = true }
ed25519-dalek = { workspace = true, optional = true }
ed25519-dalek-bip32 = { workspace = true, optional = true }
generic-array = { workspace = true, features = ["serde", "more_lengths"], optional = true }
hmac = { workspace = true }
itertools =  { workspace = true }
lazy_static = { workspace = true }
libsecp256k1 = { workspace = true, optional = true }
log = { workspace = true }
memmap2 = { workspace = true, optional = true }
num-derive = { workspace = true }
num-traits = { workspace = true }
num_enum = { workspace = true }
pbkdf2 = { workspace = true }
qstring = { workspace = true }
qualifier_attr = { workspace = true }
rand = { workspace = true, optional = true }
rand0-7 = { package = "rand", version = "0.7", optional = true }
rustversion = { workspace = true }
serde = { workspace = true }
serde_bytes = { workspace = true }
serde_derive = { workspace = true }
serde_json = { workspace = true, optional = true }
serde_with = { workspace = true, features = ["macros"] }
sha2 = { workspace = true }
sha3 = { workspace = true, optional = true }
siphasher = { workspace = true }
solana-frozen-abi = { workspace = true }
solana-frozen-abi-macro = { workspace = true }
solana-logger = { workspace = true, optional = true }
solana-program = { workspace = true }
solana-sdk-macro = { workspace = true }
thiserror = { workspace = true }
uriparse = { workspace = true }
wasm-bindgen = { workspace = true }

[target.'cfg(target_arch = "wasm32")'.dependencies]
js-sys = { workspace = true }

[dev-dependencies]
anyhow = { workspace = true }
curve25519-dalek = { workspace = true }
hex = { workspace = true }
solana-sdk = { path = ".", features = ["dev-context-only-utils"] }
static_assertions = { workspace = true }
tiny-bip39 = { workspace = true }

[build-dependencies]
rustc_version = { workspace = true }

[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

[lib]
crate-type = ["cdylib", "rlib"]
