package quicreuse

import (
	
	

	ma 
	manet 
	
)

var (
	quicV1MA = ma.StringCast("/quic-v1")
)

func ( net.Addr,  quic.Version) (ma.Multiaddr, error) {
	,  := manet.FromNetAddr()
	if  != nil {
		return nil, 
	}
	switch  {
	case quic.Version1:
		return .Encapsulate(quicV1MA), nil
	default:
		return nil, errors.New("unknown QUIC version")
	}
}

func ( ma.Multiaddr) (*net.UDPAddr, quic.Version, error) {
	var  quic.Version
	 := make([]ma.Component, 0, 2)
:
	for ,  := range  {
		switch .Protocol().Code {
		case ma.P_QUIC_V1:
			 = quic.Version1
			break 
		default:
			 = append(, )
		}
	}
	if len() == 0 {
		return nil, , errors.New("no addr before QUIC component")
	}
	if  == 0 {
		// Not found
		return nil, , errors.New("unknown QUIC version")
	}
	,  := manet.ToNetAddr()
	if  != nil {
		return nil, , 
	}
	,  := .(*net.UDPAddr)
	if ! {
		return nil, 0, errors.New("not a *net.UDPAddr")
	}
	return , , nil
}