[workspace]
members = ["jetstreamer-firehose", "jetstreamer-plugin", "jetstreamer-utils"]

[workspace.package]
edition = "2024"
version = "0.6.0"
authors = ["sam0x17", "anza-team"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/anza-xyz/jetstreamer"
documentation = "https://docs.rs/jetstreamer/latest"
keywords = ["solana", "geyser", "jetstreamer", "firehose", "transaction"]

[package]
name = "jetstreamer"
description = "High-throughput Solana transaction ledger streaming and plugin framework suitable for research and backfilling"
keywords.workspace = true
edition.workspace = true
version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
documentation.workspace = true

[features]
default = []
s3-backend = ["jetstreamer-firehose/s3-backend"]
verify-transaction-signatures = ["jetstreamer-firehose/verify-transaction-signatures"]

[workspace.dependencies]
jetstreamer-firehose = { path = "jetstreamer-firehose", version = "0.6.0" }
jetstreamer-plugin = { path = "jetstreamer-plugin", version = "0.6.0" }
jetstreamer-utils = { path = "jetstreamer-utils", version = "0.6.0" }
tokio = "1"
futures-util = { version = "0", default-features = false }
futures = "0"
log = "0"
once_cell = "1"
serde_json = { version = "1", default-features = false }
thiserror = { version = "2", default-features = false }
reqwest = { version = "0.13", default-features = false }
anyhow = { version = "1", default-features = false }
base64 = "0.22"
bincode = "1"
serial_test = "2"
wincode = { version = "0.2", features = ["derive", "solana-short-vec"] }
bs58 = { version = "0", default-features = false }
cbor = "0"
cid = "0"
colored = "2"
const-hex = "1"
crc = "3"
crossbeam-channel = { version = "0", default-features = false }
crossbeam-utils = { version = "0", default-features = false }
fnv = { version = "1", default-features = false }
url = { version = "2", default-features = false }
multihash = { version = "0", default-features = false }
prost = { package = "prost", version = "0", default-features = false }
prost_011 = { package = "prost", version = "0.11" }
protobuf-src = "1"
serde = { version = "1", default-features = false }
serde_cbor = "0"
agave-geyser-plugin-interface = "3"
solana-address = "1"
solana-hash = "3"
solana-blake3-hasher = "=3.0.0"
solana-epoch-rewards-hasher = "=3.0.0"
solana-keccak-hasher = "=3.0.0"
solana-logger = "3"
solana-signature = { version = "3", default-features = false }
solana-accounts-db = "3"
solana-entry = "3"
solana-ledger = "3"
solana-geyser-plugin-manager = { version = "3", features = ["agave-unstable-api"] }
solana-rpc = "3"
solana-runtime = "3"
solana-storage-proto = "3"
solana-message = "3"
solana-transaction = "3"
solana-transaction-status = "3"
solana-sdk-ids = "3"
solana-reward-info = "3"
solana-sysvar = "=3.0.0"
sha2 = "0.10"
tonic = { version = "0", default-features = false }
tonic-build = "0"
zstd = { version = "0", default-features = false }
thousands = "0"
tokio-stream = { version = "0", default-features = false }
rangemap = "1"
rseek = "0.4"
ripget = "0.3"
rayon = "1"
xxhash-rust = { version = "0.8", features = ["xxh64"] }
ahash = "0.8"
dashmap = "5"
clickhouse = { version = "0.14", default-features = false }
interprocess = { version = "2", features = ["tokio"] }
ctrlc = "3"
indoc = "2"
tempfile = "3"
libc = "0"
aws-credential-types = "1"
aws-sdk-s3 = "1"
aws-smithy-types = "1"
aws-types = "1"

[dependencies]
tokio.workspace = true
solana-logger.workspace = true
log.workspace = true
jetstreamer-firehose.workspace = true
jetstreamer-plugin.workspace = true
jetstreamer-utils.workspace = true
url.workspace = true
solana-sysvar.workspace = true
solana-blake3-hasher.workspace = true
solana-epoch-rewards-hasher.workspace = true
solana-keccak-hasher.workspace = true

[dev-dependencies]
clickhouse.workspace = true

[profile.release]
lto = true
codegen-units = 1
opt-level = 3

[profile.release.package."*"]
opt-level = 3
codegen-units = 1
