[package]
name = "sp-core"
version = "5.0.0"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2021"
license = "Apache-2.0"
homepage = "https://substrate.io"
repository = "https://github.com/paritytech/substrate/"
description = "Shareable Substrate types."
documentation = "https://docs.rs/sp-core"

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

[dependencies]
codec = { package = "parity-scale-codec", version = "2.2.0", default-features = false, features = [
	"derive",
	"max-encoded-len",
] }
scale-info = { version = "1.0", default-features = false, features = ["derive"] }
log = { version = "0.4.11", default-features = false }
serde = { version = "1.0.136", optional = true, features = ["derive"] }
byteorder = { version = "1.3.2", default-features = false }
primitive-types = { version = "0.10.1", default-features = false, features = ["codec", "scale-info"] }
impl-serde = { version = "0.3.0", optional = true }
wasmi = { version = "0.9.1", optional = true }
hash-db = { version = "0.15.2", default-features = false }
hash256-std-hasher = { version = "0.15.2", default-features = false }
base58 = { version = "0.2.0", optional = true }
rand = { version = "0.7.3", optional = true, features = ["small_rng"] }
substrate-bip39 = { version = "0.4.4", optional = true }
tiny-bip39 = { version = "0.8.2", optional = true }
regex = { version = "1.5.4", optional = true }
num-traits = { version = "0.2.8", default-features = false }
zeroize = { version = "1.4.3", default-features = false }
secrecy = { version = "0.8.0", default-features = false }
lazy_static = { version = "1.4.0", default-features = false, optional = true }
parking_lot = { version = "0.11.2", optional = true }
sp-std = { version = "4.0.0", default-features = false, path = "../std" }
sp-debug-derive = { version = "4.0.0", default-features = false, path = "../debug-derive" }
sp-storage = { version = "5.0.0", default-features = false, path = "../storage" }
sp-externalities = { version = "0.11.0", optional = true, path = "../externalities" }
parity-util-mem = { version = "0.10.2", default-features = false, features = ["primitive-types"] }
futures = { version = "0.3.1", optional = true }
dyn-clonable = { version = "0.9.0", optional = true }
thiserror = { version = "1.0.30", optional = true }
bitflags = "1.3"

# full crypto
ed25519-dalek = { version = "1.0.1", default-features = false, features = ["u64_backend", "alloc"], optional = true }
blake2-rfc = { version = "0.2.18", default-features = false, optional = true }
tiny-keccak = { version = "2.0.1", features = ["keccak"], optional = true }
schnorrkel = { version = "0.9.1", features = [
	"preaudit_deprecated",
	"u64_backend",
], default-features = false, optional = true }
sha2 = { version = "0.10.0", default-features = false, optional = true }
hex = { version = "0.4", default-features = false, optional = true }
twox-hash = { version = "1.6.2", default-features = false, optional = true }
libsecp256k1 = { version = "0.7", default-features = false, features = ["hmac", "static-context"], optional = true }
merlin = { version = "2.0", default-features = false, optional = true }
ss58-registry = { version = "1.11.0", default-features = false }
sp-core-hashing = { version = "4.0.0", path = "./hashing", default-features = false, optional = true }
sp-runtime-interface = { version = "5.0.0", default-features = false, path = "../runtime-interface" }

[dev-dependencies]
sp-serializer = { version = "4.0.0-dev", path = "../serializer" }
hex-literal = "0.3.4"
rand = "0.7.2"
criterion = "0.3.3"
serde_json = "1.0"
sp-core-hashing-proc-macro = { version = "4.0.0-dev", path = "./hashing/proc-macro" }

[[bench]]
name = "bench"
harness = false

[lib]
bench = false

[features]
default = ["std"]
std = [
	"full_crypto",
	"log/std",
	"thiserror",
	"wasmi",
	"lazy_static",
	"parking_lot",
	"primitive-types/std",
	"primitive-types/serde",
	"primitive-types/byteorder",
	"primitive-types/rustc-hex",
	"impl-serde",
	"codec/std",
	"scale-info/std",
	"hash256-std-hasher/std",
	"hash-db/std",
	"sp-std/std",
	"serde",
	"twox-hash/std",
	"blake2-rfc/std",
	"ed25519-dalek/std",
	"hex/std",
	"base58",
	"substrate-bip39",
	"tiny-bip39",
	"byteorder/std",
	"rand",
	"sha2/std",
	"schnorrkel/std",
	"regex",
	"num-traits/std",
	"tiny-keccak",
	"sp-core-hashing/std",
	"sp-debug-derive/std",
	"sp-externalities",
	"sp-storage/std",
	"sp-runtime-interface/std",
	"ss58-registry/std",
	"zeroize/alloc",
	"secrecy/alloc",
	"futures",
	"futures/thread-pool",
	"libsecp256k1/std",
	"dyn-clonable",
]

# This feature enables all crypto primitives for `no_std` builds like microcontrollers
# or Intel SGX.
# For the regular wasm runtime builds this should not be used.
full_crypto = [
	"ed25519-dalek",
	"blake2-rfc",
	"tiny-keccak",
	"schnorrkel",
	"hex",
	"sha2",
	"twox-hash",
	"libsecp256k1",
	"sp-core-hashing",
	"sp-runtime-interface/disable_target_static_assertions",
	"merlin",
]
