use std::time::Duration;
mod admitted;
mod backend;
mod base32;
mod body;
mod crc32c;
mod credential;
mod dialer;
mod exchange;
mod fault;
mod fingerprint;
mod framing;
mod grant;
mod head_read;
mod headers;
mod http_head;
mod identity;
mod lifecycle;
mod listener;
mod locality;
mod minting;
mod named;
mod outcome;
mod path_watch;
mod peer;
mod peers;
mod refusal;
mod request_body;
mod status;
mod superseded;
mod ticket;
mod ticket_addr;
#[cfg(feature = "serde")]
mod ticket_serde;
mod ticket_string;
mod ticket_view;
mod token_policy;
mod transport;
mod connect;
mod connect_handle;
mod network;
mod serve;
mod serve_error;
mod serve_grace;
mod serve_grant;
mod serve_handle;
mod serve_named;
mod serve_options;
mod serve_status;
pub use connect::{ConnectError, ConnectOptions, connect};
pub use connect_handle::ConnectHandle;
pub use network::NetworkMetrics;
pub use serve::serve;
pub use serve_error::{NamedTokenRefusal, ServeError};
pub use serve_handle::ServeHandle;
pub use serve_options::ServeOptions;
pub use status::{CloseReason, PeerView, PipeStatus};
pub use ticket::{Ticket, TicketParseError};
pub use token_policy::TokenPolicy;
#[expect(dead_code, reason = "compile-time pin; never called")]
const fn auto_trait_promises() {
const fn assert<T: Send + Sync + 'static>() {}
const fn assert_clone<T: Clone>() {}
const fn assert_copy_eq<T: Copy + Eq>() {}
assert::<Ticket>();
assert::<ServeHandle>();
assert::<ConnectHandle>();
assert::<PipeStatus>();
assert::<PeerView>();
assert::<ServeError>();
assert::<ConnectError>();
assert::<TicketParseError>();
assert::<NetworkMetrics>();
assert::<ServeOptions>();
assert::<ConnectOptions>();
assert::<TokenPolicy>();
assert_clone::<Ticket>();
assert_clone::<PeerView>();
assert_copy_eq::<PipeStatus>();
assert_copy_eq::<NetworkMetrics>();
}
#[expect(dead_code, reason = "compile-time pin; never called")]
fn future_promises(serve_side: &ServeHandle, connect_side: &ConnectHandle, ticket: &Ticket) {
fn assert_send(_: impl Send) {}
assert_send(serve("", ServeOptions::default()));
assert_send(connect(ticket, ConnectOptions::default()));
assert_send(serve_side.status_changed());
assert_send(serve_side.status_changed_since(PipeStatus::Idle));
assert_send(serve_side.notify_network_change());
assert_send(serve_side.shutdown());
assert_send(serve_side.shutdown_timeout(Duration::from_secs(0)));
assert_send(connect_side.status_changed());
assert_send(connect_side.status_changed_since(PipeStatus::Idle));
assert_send(connect_side.notify_network_change());
assert_send(connect_side.shutdown());
assert_send(connect_side.shutdown_timeout(Duration::from_secs(0)));
}