[package]
name         = "ibc-core-handler-types"
version      = { workspace = true }
authors      = { workspace = true }
edition      = { workspace = true }
rust-version = { workspace = true }
license      = { workspace = true }
repository   = { workspace = true }
keywords     = ["blockchain", "cosmos", "ibc", "handler", "types"]
readme       = "./../../README.md"
description  = """
    Maintained by `ibc-rs`, encapsulates essential ICS-25 Handler Interface data structures and domain types,
    as specified in the Inter-Blockchain Communication (IBC) protocol. Designed for universal applicability 
    to facilitate development and integration across diverse IBC-enabled projects.
"""

[package.metadata.docs.rs]
all-features = true

[dependencies]
# external dependencies
borsh           = { workspace = true, optional = true }
derive_more     = { workspace = true }
displaydoc      = { workspace = true }
prost           = { workspace = true }
serde           = { workspace = true, optional = true }
schemars        = { workspace = true, optional = true }
subtle-encoding = { workspace = true }

# ibc dependencies
ibc-core-client-types     = { workspace = true }
ibc-core-connection-types = { workspace = true }
ibc-core-channel-types    = { workspace = true }
ibc-core-commitment-types = { workspace = true }
ibc-core-host-types       = { workspace = true }
ibc-core-router-types     = { workspace = true }
ibc-primitives            = { workspace = true }
ibc-proto                 = { workspace = true }

# cosmos dependencies
tendermint = { workspace = true }

# parity dependencies
parity-scale-codec = { workspace = true, optional = true }
scale-info         = { workspace = true, optional = true }

[features]
default = ["std"]
std = [
    "displaydoc/std",
    "prost/std",
    "serde/std",
    "subtle-encoding/std",
    "ibc-core-client-types/std",
    "ibc-core-connection-types/std",
    "ibc-core-channel-types/std",
    "ibc-core-commitment-types/std",
    "ibc-core-host-types/std",
    "ibc-core-router-types/std",
    "ibc-primitives/std",
    "ibc-proto/std",
    "tendermint/std",
]
serde = [
    "dep:serde",
    "ibc-core-client-types/serde",
    "ibc-core-connection-types/serde",
    "ibc-core-channel-types/serde",
    "ibc-core-commitment-types/serde",
    "ibc-core-host-types/serde",
    "ibc-core-router-types/serde",
    "ibc-primitives/serde",
    "ibc-proto/serde",
]
schema = [
    "dep:schemars",
    "ibc-core-client-types/schema",
    "ibc-core-connection-types/schema",
    "ibc-core-channel-types/schema",
    "ibc-core-commitment-types/schema",
    "ibc-core-host-types/schema",
    "ibc-core-router-types/schema",
    "ibc-primitives/schema",
    "ibc-proto/json-schema",
    "serde",
    "std"
]
borsh = [
    "dep:borsh",
    "ibc-core-client-types/borsh",
    "ibc-core-connection-types/borsh",
    "ibc-core-channel-types/borsh",
    "ibc-core-commitment-types/borsh",
    "ibc-core-host-types/borsh",
    "ibc-core-router-types/borsh",
    "ibc-primitives/borsh",
    "ibc-proto/borsh",
]
parity-scale-codec = [
    "dep:parity-scale-codec",
    "dep:scale-info",
    "ibc-core-client-types/parity-scale-codec",
    "ibc-core-connection-types/parity-scale-codec",
    "ibc-core-channel-types/parity-scale-codec",
    "ibc-core-commitment-types/parity-scale-codec",
    "ibc-core-host-types/parity-scale-codec",
    "ibc-core-router-types/parity-scale-codec",
    "ibc-primitives/parity-scale-codec",
    "ibc-proto/parity-scale-codec",
]
