package nip19

import (
	"bytes"
)

const (
	TLVDefault uint8 = 0
	TLVRelay   uint8 = 1
	TLVAuthor  uint8 = 2
	TLVKind    uint8 = 3
)

func readTLVEntry(data []byte) (typ uint8, value []byte) {
	if len(data) < 2 {
		return 0, nil
	}

	typ = data[0]
	length := int(data[1])
	if len(data) < 2+length {
		return typ, nil
	}

	value = data[2 : 2+length]
	return
}

func writeTLVEntry(buf *bytes.Buffer, typ uint8, value []byte) {
	length := len(value)
	buf.WriteByte(typ)
	buf.WriteByte(uint8(length))
	buf.Write(value)
}