// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

#ifndef THIRD_PARTY_CREDENTIO_UTILS_BYTE_WRITERS_H_
#define THIRD_PARTY_CREDENTIO_UTILS_BYTE_WRITERS_H_

#include <cstdint>
#include <vector>

namespace credentio {

// Writes the given unsigned 16-bit integer to the given vector in big endian
// format.
void WriteUint16NetworkOrder(uint16_t value, std::vector<uint8_t>* bytes);

// Writes the given unsigned 32-bit integer to the given vector in big endian
// format.
void WriteUint32NetworkOrder(uint32_t value, std::vector<uint8_t>* bytes);

// Writes the given unsigned 64-bit integer to the given vector in big endian
// format.
void WriteUint64NetworkOrder(uint64_t value, std::vector<uint8_t>* bytes);

}  // namespace credentio

#endif  // THIRD_PARTY_CREDENTIO_UTILS_BYTE_WRITERS_H_
