package peer

import (
	

	

	ma 
)

// Helper struct for decoding as we can't unmarshal into an interface (Multiaddr).
type addrInfoJson struct {
	ID    ID
	Addrs []string
}

func ( AddrInfo) () ( []byte,  error) {
	defer func() { catch.HandlePanic(recover(), &, "libp2p addr info marshal") }()

	 := make([]string, len(.Addrs))
	for ,  := range .Addrs {
		[] = .String()
	}
	return json.Marshal(&addrInfoJson{
		ID:    .ID,
		Addrs: ,
	})
}

func ( *AddrInfo) ( []byte) ( error) {
	defer func() { catch.HandlePanic(recover(), &, "libp2p addr info unmarshal") }()
	var  addrInfoJson
	if  := json.Unmarshal(, &);  != nil {
		return 
	}
	 := make([]ma.Multiaddr, len(.Addrs))
	for ,  := range .Addrs {
		,  := ma.NewMultiaddr()
		if  != nil {
			return 
		}
		[] = 
	}

	.ID = .ID
	.Addrs = 
	return nil
}