[package]
name = "pallet-contracts"
version = "4.0.0-dev"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2021"
license = "Apache-2.0"
homepage = "https://substrate.io"
repository = "https://github.com/paritytech/substrate/"
description = "FRAME pallet for WASM contracts"
readme = "README.md"

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

[dependencies]
bitflags = "1.3"
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", default-features = false }
wasm-instrument = { version = "0.1", default-features = false }
serde = { version = "1", optional = true, features = ["derive"] }
smallvec = { version = "1", default-features = false, features = [
	"const_generics",
] }
wasmi-validation = { version = "0.4", default-features = false }

# Only used in benchmarking to generate random contract code
libsecp256k1 = { version = "0.7", optional = true, default-features = false, features = ["hmac", "static-context"] }
rand = { version = "0.8", optional = true, default-features = false }
rand_pcg = { version = "0.3", optional = true }

# Substrate Dependencies
frame-benchmarking = { version = "4.0.0-dev", default-features = false, path = "../benchmarking", optional = true }
frame-support = { version = "4.0.0-dev", default-features = false, path = "../support" }
frame-system = { version = "4.0.0-dev", default-features = false, path = "../system" }
pallet-contracts-primitives = { version = "5.0.0", default-features = false, path = "common" }
pallet-contracts-proc-macro = { version = "4.0.0-dev", path = "proc-macro" }
sp-core = { version = "5.0.0", default-features = false, path = "../../primitives/core" }
sp-io = { version = "5.0.0", default-features = false, path = "../../primitives/io" }
sp-runtime = { version = "5.0.0", default-features = false, path = "../../primitives/runtime" }
sp-sandbox = { version = "0.10.0-dev", default-features = false, path = "../../primitives/sandbox" }
sp-std = { version = "4.0.0", default-features = false, path = "../../primitives/std" }

[dev-dependencies]
assert_matches = "1"
env_logger = "0.9"
hex-literal = "0.3"
pretty_assertions = "1"
wat = "1"

# Substrate Dependencies
pallet-balances = { version = "4.0.0-dev", path = "../balances" }
pallet-timestamp = { version = "4.0.0-dev", path = "../timestamp" }
pallet-randomness-collective-flip = { version = "4.0.0-dev", path = "../randomness-collective-flip" }
pallet-utility = { version = "4.0.0-dev", path = "../utility" }

[features]
default = ["std"]
std = [
	"serde",
	"codec/std",
	"scale-info/std",
	"sp-core/std",
	"sp-runtime/std",
	"sp-io/std",
	"sp-std/std",
	"sp-sandbox/std",
	"frame-benchmarking/std",
	"frame-support/std",
	"frame-system/std",
	"wasm-instrument/std",
	"wasmi-validation/std",
	"pallet-contracts-primitives/std",
	"pallet-contracts-proc-macro/full",
	"log/std",
	"rand/std",
	"libsecp256k1/std",
]
runtime-benchmarks = [
	"frame-benchmarking/runtime-benchmarks",
	"libsecp256k1",
	"rand",
	"rand_pcg",
	"unstable-interface",
]
try-runtime = ["frame-support/try-runtime"]
# Make contract callable functions marked as __unstable__ available. Do not enable
# on live chains as those are subject to change.
unstable-interface = []
