package wire

import (
	
	

	
	
)

// A NewTokenFrame is a NEW_TOKEN frame
type NewTokenFrame struct {
	Token []byte
}

func parseNewTokenFrame( []byte,  protocol.Version) (*NewTokenFrame, int, error) {
	, ,  := quicvarint.Parse()
	if  != nil {
		return nil, 0, replaceUnexpectedEOF()
	}
	 = [:]
	if  == 0 {
		return nil, 0, errors.New("token must not be empty")
	}
	if uint64(len()) <  {
		return nil, 0, io.EOF
	}
	 := make([]byte, int())
	copy(, )
	return &NewTokenFrame{Token: },  + int(), nil
}

func ( *NewTokenFrame) ( []byte,  protocol.Version) ([]byte, error) {
	 = append(, byte(FrameTypeNewToken))
	 = quicvarint.Append(, uint64(len(.Token)))
	 = append(, .Token...)
	return , nil
}

// Length of a written frame
func ( *NewTokenFrame) (protocol.Version) protocol.ByteCount {
	return 1 + protocol.ByteCount(quicvarint.Len(uint64(len(.Token)))+len(.Token))
}