use std::net::{Ipv4Addr, Ipv6Addr};
use std::sync::Arc;
use std::time::Duration;
use once_cell::sync::Lazy;
use quinn::Runtime;
pub const BINCODE_BUFFER_SIZE: usize = 128;
pub const AUTH_TIMEOUT_GRACE: u64 = 5;
pub const IPV4_ADDR_SIZE: usize = std::mem::size_of::<Ipv4Addr>();
pub const IPV6_ADDR_SIZE: usize = std::mem::size_of::<Ipv6Addr>();
pub const QUIC_MTU_OVERHEAD: u16 = 42;
pub const CLEANUP_INTERVAL: Duration = Duration::from_secs(1);
#[cfg(target_os = "macos")]
pub const DARWIN_PI_HEADER_LENGTH: usize = 4;
#[cfg(target_os = "macos")]
pub const DARWIN_PI_HEADER_IPV4: [u8; 4] = [0_u8, 0_u8, 0_u8, libc::AF_INET as u8];
#[cfg(target_os = "macos")]
pub const DARWIN_PI_HEADER_IPV6: [u8; 4] = [0_u8, 0_u8, 0_u8, libc::AF_INET6 as u8];
pub static QUINCY_CIPHER_SUITES: &[rustls::SupportedCipherSuite] = &[
rustls::cipher_suite::TLS13_AES_256_GCM_SHA384,
rustls::cipher_suite::TLS13_CHACHA20_POLY1305_SHA256,
];
pub static TLS_PROTOCOL_VERSIONS: &[&rustls::SupportedProtocolVersion] = &[&rustls::version::TLS13];
pub static TLS_ALPN_PROTOCOLS: Lazy<Vec<Vec<u8>>> = Lazy::new(|| vec![b"quincy".to_vec()]);
pub static QUINN_RUNTIME: Lazy<Arc<dyn Runtime>> = Lazy::new(|| Arc::new(quinn::TokioRuntime));