package peer import "net/netip" type udpReader interface { ReadFromUDPAddrPort(b []byte) (n int, addr netip.AddrPort, err error) } type udpWriter interface { WriteToUDPAddrPort([]byte, netip.AddrPort) (int, error) } type marshaller interface { Marshal([]byte) []byte } type dataPacketSender interface { SendDataPacket(pkt []byte, route *peerRoute) RelayDataPacket(pkt []byte, route, relay *peerRoute) } type encryptedPacketSender interface { SendEncryptedDataPacket(pkt []byte, route *peerRoute) } type controlMsgHandler interface { HandleControlMsg(pkt any) }