package peer import ( "net" "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, peer *RemotePeer) RelayDataPacket(pkt []byte, peer, relay *RemotePeer) } type encryptedPacketSender interface { SendEncryptedDataPacket(pkt []byte, peer *RemotePeer) } type controlMsgHandler interface { HandleControlMsg(pkt any) } type mcUDPWriter interface { WriteToUDP([]byte, *net.UDPAddr) (int, error) }