content: [package]
  name = "ombrac-client"
  version.workspace = true
  authors.workspace = true
  edition.workspace = true
  license.workspace = true
  keywords.workspace = true
  repository.workspace = true
  description.workspace = true
  readme = "../../README.md"
  
  [[bin]]
  name = "ombrac-client"
  path = "bin/main.rs"
  required-features = ["binary"]
  
  [lib]
  name = "ombrac_client"
  crate-type = ["staticlib", "cdylib", "rlib"]
  
  [features]
  default = [
      "tracing",
      "datagram",
      "endpoint-default",
      "transport-default",
  ]
  
  binary = [
      "tracing",
      "transport-quic",
      "endpoint-socks",
      "endpoint-http",
      "endpoint-tun"
  ]
  
  datagram = [
      "ombrac-transport/datagram",
      "dep:dashmap"
  ]
  
  tracing = [
      "dep:tracing",
      "dep:tracing-appender",
      "dep:tracing-subscriber",
      "ombrac-netstack/tracing",
      "ombrac-transport/tracing"
  ]
  endpoint-default = ["endpoint-socks"]
  endpoint-socks = ["socks-lib"]
  endpoint-tun = [
      "ombrac-netstack",
      "ipnet",
      "tun-rs",
      "moka",
      "twox-hash",
      "hickory-proto"
  ]
  endpoint-http = [
      "http", 
      "hyper", 
      "hyper-util", 
      "http-body-util"
  ]
  
  
  transport-default = ["transport-quic"]
  transport-quic = ["ombrac-transport/quic"]
  
  [dependencies]
  ombrac = { workspace = true }
  ombrac-macros = { workspace = true }
  ombrac-transport = { workspace = true }
  ombrac-netstack = { workspace = true, optional = true }
  
  bytes = { workspace = true }
  blake3 = { workspace = true }
  bincode = { workspace = true }
  futures = { workspace = true }
  arc-swap = { workspace = true }
  thiserror = { workspace = true }
  serde = { workspace = true, features = ["derive"] }
  figment = { workspace = true, features = ["json"] }
  clap = { workspace = true, features = ["std", "derive", "color", "help", "usage", "error-context", "suggestions"] }
  tokio = { workspace = true, features = ["rt-multi-thread", "net", "macros", "signal", "sync"] }
  tokio-util = { workspace = true, features = ["codec"] }
  moka = { workspace = true, features = ["future"], optional = true }
  tracing = { workspace = true, optional = true }
  tracing-appender = { workspace = true, optional = true}
  tracing-subscriber = { workspace = true, features = ["ansi", "env-filter", "registry"], optional = true }
  
  # endpoint
  socks-lib = { workspace = true, optional = true }
  http = { workspace = true, optional = true }
  hyper = { workspace = true, features = ["client", "server", "http1"], optional = true }
  hyper-util = { workspace = true, features = ["tokio"], optional = true }
  http-body-util = { workspace = true, optional = true }
  ipnet = { workspace = true, features = ["json"], optional = true }
  tun-rs = { workspace = true, features = ["async_tokio", "async_framed"], optional = true }
  dashmap = { workspace = true, optional = true }
  hickory-proto = { workspace = true, optional = true }
  twox-hash = { workspace = true, features = ["xxhash64"], optional = true }
  
  [dev-dependencies]
  tokio = { workspace = true, features = ["full"] }
  
  [build-dependencies]
  cbindgen = { workspace = true }
  
  [lints]
  workspace = true
  