Documentation
[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]
# Needed by the monorepo for checks in CI, can be removed when the SDK is
# extracted
dummy-for-ci-check = []
# "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 = [
    "borsh",
    "full",  # functionality that is not compatible or needed for on-chain programs
]
full = [
    "serde_json",
    "solana-signature",
    "solana-transaction-context/debug-signature",
    "solana-pubkey/rand",
    "dep:solana-client-traits",
    "dep:solana-cluster-type",
    "dep:solana-ed25519-program",
    "dep:solana-commitment-config",
    "dep:solana-compute-budget-interface",
    "dep:solana-genesis-config",
    "dep:solana-hard-forks",
    "dep:solana-keypair",
    "dep:solana-offchain-message",
    "dep:solana-precompile-error",
    "dep:solana-precompiles",
    "dep:solana-presigner",
    "dep:solana-quic-definitions",
    "dep:solana-rent-collector",
    "dep:solana-secp256k1-program",
    "dep:solana-seed-derivable",
    "dep:solana-seed-phrase",
    "dep:solana-shred-version",
    "dep:solana-signer",
    "dep:solana-system-transaction",
    "dep:solana-transaction",
    "dep:solana-transaction-error",
]
borsh = [
    "solana-compute-budget-interface/borsh",
    "solana-program/borsh",
    "solana-secp256k1-recover/borsh",
]
dev-context-only-utils = [
    "solana-account/dev-context-only-utils",
    "solana-compute-budget-interface/dev-context-only-utils",
    "solana-rent-debits/dev-context-only-utils",
    "solana-transaction/dev-context-only-utils",
    "solana-transaction-context/dev-context-only-utils",
]
frozen-abi = [
    "solana-feature-set/frozen-abi",
    "solana-fee-structure/frozen-abi",
    "solana-account/frozen-abi",
    "solana-cluster-type/frozen-abi",
    "solana-genesis-config/frozen-abi",
    "solana-hard-forks/frozen-abi",
    "solana-inflation/frozen-abi",
    "solana-packet/frozen-abi",
    "solana-poh-config/frozen-abi",
    "solana-program/frozen-abi",
    "solana-rent-collector/frozen-abi",
    "solana-reward-info/frozen-abi",
    "solana-short-vec/frozen-abi",
    "solana-signature/frozen-abi",
    "solana-transaction/frozen-abi",
    "solana-transaction-error/frozen-abi"
]
# Enables the "vendored" feature of openssl inside of secp256r1-program
openssl-vendored = ["solana-precompiles/openssl-vendored"]

[dependencies]
bincode = { workspace = true }
bs58 = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true, optional = true }
solana-account = { workspace = true, features = ["bincode"] }
solana-bn254 = { workspace = true }
solana-client-traits = { workspace = true, optional = true }
solana-cluster-type = { workspace = true, features = [
    "serde",
], optional = true }
solana-commitment-config = { workspace = true, optional = true, features = [
    "serde",
] }
solana-compute-budget-interface = { workspace = true, optional = true, features = [
    "serde",
] }
solana-decode-error = { workspace = true }
solana-derivation-path = { workspace = true }
solana-ed25519-program = { workspace = true, optional = true }
solana-epoch-info = { workspace = true, features = ["serde"] }
solana-epoch-rewards-hasher = { workspace = true }
solana-feature-set = { workspace = true }
solana-fee-structure = { workspace = true, features = ["serde"] }
solana-genesis-config = { workspace = true, features = [
    "serde"
], optional = true }
solana-hard-forks = { workspace = true, features = [
    "serde",
], optional = true }
solana-inflation = { workspace = true, features = ["serde"] }
solana-instruction = { workspace = true }
solana-keypair = { workspace = true, optional = true, features = [
    "seed-derivable",
] }
solana-message = { workspace = true, features = ["serde"] }
solana-native-token = { workspace = true }
solana-nonce-account = { workspace = true }
solana-offchain-message = { workspace = true, optional = true, features = ["verify"] }
solana-packet = { workspace = true, features = ["bincode", "serde"] }
solana-poh-config = { workspace = true, features = ["serde"] }
solana-precompile-error = { workspace = true, optional = true }
solana-precompiles = { workspace = true, optional = true }
solana-presigner = { workspace = true, optional = true }
solana-program = { workspace = true }
solana-program-memory = { workspace = true }
solana-pubkey = { workspace = true, default-features = false, features = [
    "std",
] }
solana-quic-definitions = { workspace = true, optional = true }
solana-rent-collector = { workspace = true, features = [
    "serde"
], optional = true }
solana-rent-debits = { workspace = true }
solana-reserved-account-keys = { workspace = true }
solana-reward-info = { workspace = true, features = ["serde"] }
solana-sanitize = { workspace = true }
solana-sdk-ids = { workspace = true }
solana-sdk-macro = { workspace = true }
solana-secp256k1-program = { workspace = true, optional = true, features = [
    "bincode",
] }
solana-secp256k1-recover = { workspace = true }
solana-secp256r1-program = { workspace = true, default-features = false }
solana-seed-derivable = { workspace = true, optional = true }
solana-seed-phrase = { workspace = true, optional = true }
solana-serde = { workspace = true }
solana-serde-varint = { workspace = true }
solana-short-vec = { workspace = true }
solana-shred-version = { workspace = true, optional = true }
solana-signature = { workspace = true, features = [
    "rand",
    "serde",
    "std",
    "verify",
], optional = true }
solana-signer = { workspace = true, optional = true }
solana-system-transaction = { workspace = true, optional = true }
solana-time-utils = { workspace = true }
solana-transaction = { workspace = true, features = [
    "blake3",
    "precompiles",
    "serde",
    "verify"
], optional = true }
solana-transaction-context = { workspace = true, features = ["bincode"] }
solana-transaction-error = { workspace = true, features = [
    "serde",
], optional = true }
solana-validator-exit = { workspace = true }
thiserror = { workspace = true }

[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.1", features = ["wasm-bindgen"] }
js-sys = { workspace = true }
wasm-bindgen = { workspace = true }

[dev-dependencies]
curve25519-dalek = { workspace = true }
ed25519-dalek = { workspace = true }
libsecp256k1 = { workspace = true, features = ["hmac"] }
openssl = { workspace = true }
rand0-7 = { workspace = true }
serde_derive = { workspace = true }
serde_with = { workspace = true, features = ["macros"] }
solana-instructions-sysvar = { workspace = true, features = ["dev-context-only-utils"] }
solana-program = { workspace = true, features = ["dev-context-only-utils"] }
solana-sdk = { path = ".", features = ["dev-context-only-utils"] }

[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu", "wasm32-unknown-unknown"]
all-features = true
rustdoc-args = ["--cfg=docsrs"]

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

[lints]
workspace = true