[package]
name = "frame-support"
version = "28.0.0"
authors.workspace = true
edition.workspace = true
license = "Apache-2.0"
homepage = "https://substrate.io"
repository.workspace = true
description = "Support code for the runtime."
readme = "README.md"

[lints]
workspace = true

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

[dependencies]
array-bytes = { version = "6.2.2", default-features = false }
serde = { features = ["alloc", "derive"], workspace = true }
codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = [
	"derive",
	"max-encoded-len",
] }
scale-info = { version = "2.11.1", default-features = false, features = [
	"derive",
] }
frame-metadata = { version = "16.0.0", default-features = false, features = [
	"current",
] }
sp-api = { path = "../../primitives/api", default-features = false, features = [
	"frame-metadata",
] }
sp-std = { path = "../../primitives/std", default-features = false }
sp-io = { path = "../../primitives/io", default-features = false }
sp-runtime = { path = "../../primitives/runtime", default-features = false, features = [
	"serde",
] }
sp-tracing = { path = "../../primitives/tracing", default-features = false }
sp-core = { path = "../../primitives/core", default-features = false }
sp-arithmetic = { path = "../../primitives/arithmetic", default-features = false }
sp-inherents = { path = "../../primitives/inherents", default-features = false }
sp-staking = { path = "../../primitives/staking", default-features = false }
sp-weights = { path = "../../primitives/weights", default-features = false }
sp-debug-derive = { path = "../../primitives/debug-derive", default-features = false }
sp-metadata-ir = { path = "../../primitives/metadata-ir", default-features = false }
tt-call = "1.0.8"
macro_magic = "0.5.0"
frame-support-procedural = { path = "procedural", default-features = false }
paste = "1.0"
sp-state-machine = { path = "../../primitives/state-machine", default-features = false, optional = true }
bitflags = "1.3"
impl-trait-for-tuples = "0.2.2"
smallvec = "1.11.0"
log = { workspace = true }
sp-crypto-hashing-proc-macro = { path = "../../primitives/crypto/hashing/proc-macro" }
k256 = { version = "0.13.1", default-features = false, features = ["ecdsa"] }
environmental = { version = "1.1.4", default-features = false }
sp-genesis-builder = { path = "../../primitives/genesis-builder", default-features = false }
serde_json = { features = ["alloc"], workspace = true }
docify = "0.2.8"
static_assertions = "1.1.0"

aquamarine = { version = "0.5.0" }

[dev-dependencies]
assert_matches = "1.3.0"
pretty_assertions = "1.2.1"
sp-timestamp = { path = "../../primitives/timestamp", default-features = false }
frame-system = { path = "../system" }
sp-crypto-hashing = { path = "../../primitives/crypto/hashing" }

[features]
default = ["std"]
std = [
	"codec/std",
	"environmental/std",
	"frame-metadata/std",
	"frame-support-procedural/std",
	"frame-system/std",
	"k256/std",
	"log/std",
	"scale-info/std",
	"serde/std",
	"serde_json/std",
	"sp-api/std",
	"sp-arithmetic/std",
	"sp-core/std",
	"sp-debug-derive/std",
	"sp-genesis-builder/std",
	"sp-inherents/std",
	"sp-io/std",
	"sp-metadata-ir/std",
	"sp-runtime/std",
	"sp-staking/std",
	"sp-state-machine/std",
	"sp-std/std",
	"sp-timestamp/std",
	"sp-tracing/std",
	"sp-weights/std",
]
runtime-benchmarks = [
	"frame-system/runtime-benchmarks",
	"sp-runtime/runtime-benchmarks",
	"sp-staking/runtime-benchmarks",
]
try-runtime = [
	"frame-system/try-runtime",
	"sp-debug-derive/force-debug",
	"sp-runtime/try-runtime",
]
experimental = [
	"frame-support-procedural/experimental",
]
# By default some types have documentation, `no-metadata-docs` allows to reduce the documentation
# in the metadata.
no-metadata-docs = [
	"frame-support-procedural/no-metadata-docs",
	"sp-api/no-metadata-docs",
]
# By default some types have documentation, `full-metadata-docs` allows to add documentation to
# more types in the metadata.
full-metadata-docs = ["scale-info/docs"]
# Generate impl-trait for tuples with the given number of tuples. Will be needed as the number of
# pallets in a runtime grows. Does increase the compile time!
tuples-96 = ["frame-support-procedural/tuples-96"]
tuples-128 = ["frame-support-procedural/tuples-128"]