// SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
// SPDX-License-Identifier: MIT

package protocol

// CompressionMethodID is the ID for a CompressionMethod
type CompressionMethodID byte

const (
	compressionMethodNull CompressionMethodID = 0
)

// CompressionMethod represents a TLS Compression Method
type CompressionMethod struct {
	ID CompressionMethodID
}

// CompressionMethods returns all supported CompressionMethods
func () map[CompressionMethodID]*CompressionMethod {
	return map[CompressionMethodID]*CompressionMethod{
		compressionMethodNull: {ID: compressionMethodNull},
	}
}

// DecodeCompressionMethods the given compression methods
func ( []byte) ([]*CompressionMethod, error) {
	if len() < 1 {
		return nil, errBufferTooSmall
	}
	 := int([0])
	 := []*CompressionMethod{}
	for  := 0;  < ; ++ {
		if len() <= +1 {
			return nil, errBufferTooSmall
		}
		 := CompressionMethodID([+1])
		if ,  := CompressionMethods()[];  {
			 = append(, )
		}
	}
	return , nil
}

// EncodeCompressionMethods the given compression methods
func ( []*CompressionMethod) []byte {
	 := []byte{byte(len())}
	for  := len();  > 0; -- {
		 = append(, byte([-1].ID))
	}
	return 
}