# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2024"
rust-version = "1.88.0"
name = "ant-quic"
version = "0.27.9"
build = false
exclude = [
    ".claude-flow/",
    ".minimax/",
    ".planning.archived/",
    ".github/",
    ".githooks/",
    ".serena/",
    ".codecov.yml",
    ".DS_Store",
    "*.DS_Store",
    "agents_to_run.sh",
    "dave.md",
    "release-build/",
    "go_ssb_readme.md",
    "holepunch.proto",
    "holepuncher.go",
    "rust_ssb_readme.md",
    "svc.go",
    "docs/rfcs/*.pdf",
    "docs/diagrams/",
    "docs/planning/",
    "target/",
    "scripts/",
    "tests/data/large_files/",
    "benches/",
    "examples/chat_demo.rs",
    "examples/dashboard_demo.rs",
    "examples/simple_chat.rs",
    "examples/nat_simulation.rs",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "QUIC transport protocol with advanced NAT traversal for P2P networks"
readme = "README.md"
keywords = [
    "quic",
    "nat-traversal",
    "p2p",
    "autonomi",
    "networking",
]
categories = [
    "network-programming",
    "asynchronous",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dirvine/ant-quic"

[package.metadata.docs.rs]
no-default-features = true
features = [
    "platform-verifier",
    "network-discovery",
]

[package.metadata.cargo-machete]
ignored = ["x25519-dalek"]

[features]
__qlog = ["dep:qlog"]
arbitrary = ["dep:arbitrary"]
ble = ["dep:btleplug"]
default = [
    "platform-verifier",
    "network-discovery",
]
network-discovery = [
    "dep:socket2",
    "dep:nix",
]
platform-verifier = ["dep:rustls-platform-verifier"]
trace = []

[lib]
name = "ant_quic"
path = "src/lib.rs"

[[bin]]
name = "ant-quic"
path = "src/bin/ant-quic.rs"

[[bin]]
name = "interop-test"
path = "src/bin/interop-test.rs"

[[bin]]
name = "test-public-endpoints"
path = "src/bin/test_public_endpoints.rs"

[[bin]]
name = "e2e-test-node"
path = "src/bin/e2e-test-node.rs"

[[example]]
name = "ble_chat"
path = "examples/ble_chat.rs"

[[example]]
name = "ml_kem_usage"
path = "examples/ml_kem_usage.rs"

[[example]]
name = "port_configuration"
path = "examples/port_configuration.rs"

[[example]]
name = "pqc_config_demo"
path = "examples/pqc_config_demo.rs"

[[example]]
name = "pqc_verification"
path = "examples/pqc_verification.rs"

[[example]]
name = "simple_p2p"
path = "examples/simple_p2p.rs"

[[example]]
name = "simple_transfer"
path = "examples/simple_transfer.rs"

[[example]]
name = "test_network_discovery_simple"
path = "examples/test_network_discovery_simple.rs"

[[example]]
name = "throughput_test"
path = "examples/throughput_test.rs"

[[example]]
name = "trace_demo"
path = "examples/trace_demo.rs"

[[example]]
name = "verify_quic_endpoints"
path = "examples/verify_quic_endpoints.rs"

[[test]]
name = "address_discovery_nat_traversal"
path = "tests/address_discovery_nat_traversal.rs"

[[test]]
name = "address_discovery_security_simple"
path = "tests/address_discovery_security_simple.rs"

[[test]]
name = "b_events_parity"
path = "tests/b_events_parity.rs"

[[test]]
name = "b_health_snapshot"
path = "tests/b_health_snapshot.rs"

[[test]]
name = "b_probe_peer"
path = "tests/b_probe_peer.rs"

[[test]]
name = "b_send_fire_and_forget"
path = "tests/b_send_fire_and_forget.rs"

[[test]]
name = "b_send_with_receive_ack"
path = "tests/b_send_with_receive_ack.rs"

[[test]]
name = "ble_transport"
path = "tests/ble_transport.rs"

[[test]]
name = "cli_connect_smoke"
path = "tests/cli_connect_smoke.rs"

[[test]]
name = "compat_address_discovery_e2e"
path = "tests/compat_address_discovery_e2e.rs"

[[test]]
name = "compat_address_discovery_integration"
path = "tests/compat_address_discovery_integration.rs"

[[test]]
name = "compat_address_discovery_integration_simple"
path = "tests/compat_address_discovery_integration_simple.rs"

[[test]]
name = "compat_datagram_drop_tests"
path = "tests/compat_datagram_drop_tests.rs"

[[test]]
name = "compat_ipv4_ipv6_nat_verification"
path = "tests/compat_ipv4_ipv6_nat_verification.rs"

[[test]]
name = "compat_multi_client_mixed_traffic"
path = "tests/compat_multi_client_mixed_traffic.rs"

[[test]]
name = "compat_nat_traversal_mixed_format"
path = "tests/compat_nat_traversal_mixed_format.rs"

[[test]]
name = "compat_observed_address_frame_flow"
path = "tests/compat_observed_address_frame_flow.rs"

[[test]]
name = "compat_pqc_integration_final"
path = "tests/compat_pqc_integration_final.rs"

[[test]]
name = "compat_regression_166_accept_uni_race"
path = "tests/compat_regression_166_accept_uni_race.rs"

[[test]]
name = "compat_smoke_quic_connect"
path = "tests/compat_smoke_quic_connect.rs"

[[test]]
name = "comprehensive_p2p_network"
path = "tests/comprehensive_p2p_network.rs"

[[test]]
name = "config_migration"
path = "tests/config_migration.rs"

[[test]]
name = "connection_lifecycle_tests"
path = "tests/connection_lifecycle_tests.rs"

[[test]]
name = "connection_success_rates"
path = "tests/connection_success_rates.rs"

[[test]]
name = "constrained_integration"
path = "tests/constrained_integration.rs"

[[test]]
name = "designer_flow_nat_proof"
path = "tests/designer_flow_nat_proof.rs"

[[test]]
name = "discovery"
path = "tests/discovery.rs"

[[test]]
name = "docker_nat_integration"
path = "tests/docker_nat_integration.rs"

[[test]]
name = "event_migration"
path = "tests/event_migration.rs"

[[test]]
name = "frame_encoding_tests"
path = "tests/frame_encoding_tests.rs"

[[test]]
name = "fuzz_nat_traversal"
path = "tests/fuzz_nat_traversal.rs"

[[test]]
name = "interop_test"
path = "tests/interop_test.rs"

[[test]]
name = "ipv4_ipv6_bridging_tests"
path = "tests/ipv4_ipv6_bridging_tests.rs"

[[test]]
name = "lifecycle_active_close"
path = "tests/lifecycle_active_close.rs"

[[test]]
name = "lifecycle_canonical_live"
path = "tests/lifecycle_canonical_live.rs"

[[test]]
name = "lifecycle_observability"
path = "tests/lifecycle_observability.rs"

[[test]]
name = "lifecycle_sender_stale"
path = "tests/lifecycle_sender_stale.rs"

[[test]]
name = "lifecycle_simultaneous_replace"
path = "tests/lifecycle_simultaneous_replace.rs"

[[test]]
name = "live_network_e2e"
path = "tests/live_network_e2e.rs"

[[test]]
name = "long"
path = "tests/long/main.rs"

[[test]]
name = "masque_integration_tests"
path = "tests/masque_integration_tests.rs"

[[test]]
name = "ml_dsa_65_tests"
path = "tests/ml_dsa_65_tests.rs"

[[test]]
name = "ml_kem_768_tests"
path = "tests/ml_kem_768_tests.rs"

[[test]]
name = "nat_docker_integration"
path = "tests/nat_docker_integration.rs"

[[test]]
name = "nat_local"
path = "tests/nat_local.rs"

[[test]]
name = "nat_test_harness"
path = "tests/nat_test_harness.rs"

[[test]]
name = "nat_traversal_api_tests"
path = "tests/nat_traversal_api_tests.rs"

[[test]]
name = "nat_traversal_frame_tests"
path = "tests/nat_traversal_frame_tests.rs"

[[test]]
name = "nat_traversal_pqc_rawpk_integration"
path = "tests/nat_traversal_pqc_rawpk_integration.rs"

[[test]]
name = "nat_traversal_race_condition_tests"
path = "tests/nat_traversal_race_condition_tests.rs"

[[test]]
name = "nat_traversal_rfc_compliance_tests"
path = "tests/nat_traversal_rfc_compliance_tests.rs"

[[test]]
name = "nat_traversal_simulation"
path = "tests/nat_traversal_simulation.rs"

[[test]]
name = "p2p_external_address_discovery"
path = "tests/p2p_external_address_discovery.rs"

[[test]]
name = "p2p_multi_peer_delivery"
path = "tests/p2p_multi_peer_delivery.rs"

[[test]]
name = "p2p_smoke_connect"
path = "tests/p2p_smoke_connect.rs"

[[test]]
name = "platform_api_integration_tests"
path = "tests/platform_api_integration_tests.rs"

[[test]]
name = "platform_specific"
path = "tests/platform_specific.rs"

[[test]]
name = "pqc_basic_integration"
path = "tests/pqc_basic_integration.rs"

[[test]]
name = "pqc_config"
path = "tests/pqc_config.rs"

[[test]]
name = "pqc_packet_handling"
path = "tests/pqc_packet_handling.rs"

[[test]]
name = "pqc_provider_tests"
path = "tests/pqc_provider_tests.rs"

[[test]]
name = "pqc_security_validation"
path = "tests/pqc_security_validation.rs"

[[test]]
name = "property_tests"
path = "tests/property_tests/main.rs"

[[test]]
name = "proptest_config"
path = "tests/proptest_config.rs"

[[test]]
name = "quick"
path = "tests/quick/main.rs"

[[test]]
name = "raw_public_key_pqc_tests"
path = "tests/raw_public_key_pqc_tests.rs"

[[test]]
name = "reconnect_reader_task"
path = "tests/reconnect_reader_task.rs"

[[test]]
name = "regression_166_mesh_churn"
path = "tests/regression_166_mesh_churn.rs"

[[test]]
name = "regression_166_p2p_endpoint_race"
path = "tests/regression_166_p2p_endpoint_race.rs"

[[test]]
name = "regression_166_sanity"
path = "tests/regression_166_sanity.rs"

[[test]]
name = "relay_queue_tests"
path = "tests/relay_queue_tests.rs"

[[test]]
name = "release_hygiene"
path = "tests/release_hygiene.rs"

[[test]]
name = "security_regression_tests"
path = "tests/security_regression_tests.rs"

[[test]]
name = "simple_nat_traversal_tests"
path = "tests/simple_nat_traversal_tests.rs"

[[test]]
name = "simple_node_api"
path = "tests/simple_node_api.rs"

[[test]]
name = "simultaneous_connect_dedup"
path = "tests/simultaneous_connect_dedup.rs"

[[test]]
name = "standard"
path = "tests/standard/main.rs"

[[test]]
name = "stress_tests"
path = "tests/stress_tests.rs"

[[test]]
name = "test_raw_public_keys"
path = "tests/test_raw_public_keys.rs"

[[test]]
name = "transport_adverts"
path = "tests/transport_adverts.rs"

[[test]]
name = "transport_registry_flow"
path = "tests/transport_registry_flow.rs"

[[test]]
name = "transport_selection_properties"
path = "tests/transport_selection_properties.rs"

[dependencies.anyhow]
version = "1"

[dependencies.arbitrary]
version = "1.3"
features = ["derive"]
optional = true

[dependencies.async-trait]
version = "0.1"

[dependencies.aws-lc-rs]
version = "1.16"
features = [
    "unstable",
    "aws-lc-sys",
    "prebuilt-nasm",
]
default-features = false

[dependencies.blake3]
version = "1"

[dependencies.btleplug]
version = "0.11"
optional = true

[dependencies.bytes]
version = ">=1.11.1"

[dependencies.chrono]
version = "0.4"
features = ["serde"]

[dependencies.clap]
version = "4"
features = ["derive"]

[dependencies.dashmap]
version = "6"

[dependencies.dirs]
version = "5.0"

[dependencies.futures-util]
version = "0.3"

[dependencies.hex]
version = "0.4"

[dependencies.igd-next]
version = "0.17"
features = ["aio_tokio"]

[dependencies.indexmap]
version = "2.0"

[dependencies.keyring]
version = "3"

[dependencies.lru-slab]
version = "0.1.2"

[dependencies.mdns-sd]
version = "0.19"

[dependencies.nix]
version = "0.29"
features = [
    "resource",
    "net",
]
optional = true

[dependencies.once_cell]
version = "1.21"

[dependencies.parking_lot]
version = "0.12"

[dependencies.pin-project-lite]
version = "0.2"

[dependencies.qlog]
version = "0.13"
optional = true

[dependencies.quinn-udp]
version = "0.5"
features = [
    "log",
    "tracing",
]

[dependencies.rand]
version = "0.8"

[dependencies.rcgen]
version = "0.14"

[dependencies.regex]
version = "1.11"

[dependencies.reqwest]
version = "0.12"
features = [
    "json",
    "rustls-tls",
]
default-features = false

[dependencies.rustc-hash]
version = "2"

[dependencies.rustls]
version = "0.23.35"
features = [
    "std",
    "aws-lc-rs",
]
default-features = false

[dependencies.rustls-native-certs]
version = "0.8"

[dependencies.rustls-pemfile]
version = "2.0"

[dependencies.rustls-platform-verifier]
version = "0.6"
optional = true

[dependencies.rustls-post-quantum]
version = "0.2"
features = ["aws-lc-rs-unstable"]

[dependencies.saorsa-pqc]
version = "0.5"

[dependencies.serde]
version = "1"
features = ["derive"]

[dependencies.serde_json]
version = "1"

[dependencies.serde_yaml]
version = "0.9"

[dependencies.sha2]
version = "0.10"

[dependencies.slab]
version = "0.4.11"

[dependencies.socket2]
version = "0.5"
optional = true

[dependencies.thiserror]
version = "2.0.3"

[dependencies.time]
version = "0.3.47"

[dependencies.tinyvec]
version = "1.1"
features = ["alloc"]

[dependencies.tokio]
version = "1.28.1"
features = ["full"]

[dependencies.tokio-util]
version = "0.7"

[dependencies.tracing]
version = "0.1.10"
features = [
    "std",
    "attributes",
    "log",
]
default-features = false

[dependencies.tracing-subscriber]
version = "0.3.0"
features = [
    "env-filter",
    "fmt",
    "ansi",
    "time",
    "local-time",
    "json",
]
default-features = false

[dependencies.unicode-width]
version = "=0.2.0"

[dependencies.uuid]
version = "1.0"
features = [
    "v4",
    "serde",
]

[dependencies.x25519-dalek]
version = "2.0"
features = ["static_secrets"]

[dependencies.zeroize]
version = "1.8"
features = ["derive"]

[dev-dependencies.anyhow]
version = "1"

[dev-dependencies.assert_matches]
version = "1.1"

[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]

[dev-dependencies.hex-literal]
version = "0.4"

[dev-dependencies.lazy_static]
version = "1"

[dev-dependencies.mock-igd]
version = "0.1"

[dev-dependencies.proptest]
version = "1.5"
features = ["std"]

[dev-dependencies.proptest-derive]
version = "0.5"

[dev-dependencies.quickcheck]
version = "1.0"

[dev-dependencies.quickcheck_macros]
version = "1.0"

[dev-dependencies.rand_pcg]
version = "0.3"

[dev-dependencies.rcgen]
version = "0.14"

[dev-dependencies.serde_json]
version = "1"

[dev-dependencies.serde_yaml]
version = "0.9"

[dev-dependencies.tempfile]
version = "3"

[dev-dependencies.tokio]
version = "1.36"
features = ["full"]

[dev-dependencies.tracing-subscriber]
version = "0.3.0"
features = [
    "env-filter",
    "fmt",
    "ansi",
    "time",
    "local-time",
    "json",
]
default-features = false

[dev-dependencies.webpki-roots]
version = "1.0"

[target.'cfg(target_os = "linux")'.dependencies.hex]
version = "0.4"

[target.'cfg(target_os = "linux")'.dependencies.sha2]
version = "0.10"

[target.'cfg(target_os = "macos")'.dependencies.core-foundation]
version = "0.9"

[target.'cfg(target_os = "macos")'.dependencies.system-configuration]
version = "0.6"

[target."cfg(unix)".dependencies.libc]
version = "0.2"

[target."cfg(windows)".dependencies.windows]
version = "0.58"
features = [
    "Win32_Foundation",
    "Win32_NetworkManagement_IpHelper",
    "Win32_NetworkManagement_Ndis",
    "Win32_Networking_WinSock",
    "Win32_System",
    "Win32_System_IO",
    "Win32_System_Threading",
]

[lints.clippy.all]
level = "warn"
priority = -1

[lints.clippy.arithmetic_side_effects]
level = "allow"
priority = 2

[lints.clippy.complexity]
level = "warn"
priority = 0

[lints.clippy.correctness]
level = "deny"
priority = 1

[lints.clippy.enum_variant_names]
level = "allow"
priority = 2

[lints.clippy.excessive_nesting]
level = "allow"
priority = 2

[lints.clippy.expect_used]
level = "deny"
priority = 1

[lints.clippy.indexing_slicing]
level = "allow"
priority = 2

[lints.clippy.missing_errors_doc]
level = "allow"
priority = 2

[lints.clippy.missing_panics_doc]
level = "allow"
priority = 2

[lints.clippy.module_name_repetitions]
level = "allow"
priority = 2

[lints.clippy.must_use_candidate]
level = "allow"
priority = 2

[lints.clippy.pedantic]
level = "allow"
priority = -1

[lints.clippy.perf]
level = "warn"
priority = 0

[lints.clippy.print_stderr]
level = "allow"
priority = 2

[lints.clippy.print_stdout]
level = "allow"
priority = 2

[lints.clippy.restriction]
level = "allow"
priority = -1

[lints.clippy.suspicious]
level = "warn"
priority = 0

[lints.clippy.unwrap_used]
level = "deny"
priority = 1

[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = [
    "cfg(fuzzing)",
    "cfg(wasm_browser)",
]

[profile.release]
lto = "thin"
debug = 0
split-debuginfo = "off"
strip = "symbols"
