use alloc::vec::Vec;
use crate::blob::error::BlobError;
use crate::blob::schema::BlobMeta;
use crate::blob::{BLOB_MAGIC, HEADER_SIZE};
pub fn encode_cnb(
schema_version: u32,
meta: &BlobMeta,
payload: &[u8],
) -> Result<Vec<u8>, BlobError> {
let meta_bytes: Vec<u8> = postcard::to_allocvec(meta).map_err(|_| BlobError::Encode)?;
let mut data = Vec::with_capacity(HEADER_SIZE + meta_bytes.len() + payload.len());
data.extend_from_slice(&BLOB_MAGIC);
data.extend_from_slice(&schema_version.to_le_bytes());
data.extend_from_slice(&(meta_bytes.len() as u64).to_le_bytes());
data.extend_from_slice(&meta_bytes);
data.extend_from_slice(payload);
Ok(data)
}