#pragma once
#include "rust/cxx.h"
#include <cstdint>
#include <vector>
#include <memory>
struct MeshAttribute;
struct MeshConfig;
namespace draco {
class Mesh;
}
class DracoMesh {
public:
std::unique_ptr<draco::Mesh> mesh;
explicit DracoMesh(std::unique_ptr<draco::Mesh> m);
~DracoMesh();
};
rust::Vec<uint8_t> decode_point_cloud(rust::Slice<const uint8_t> data);
std::unique_ptr<DracoMesh> create_mesh(rust::Slice<const uint8_t> data);
bool compute_mesh_config(const DracoMesh &mesh, MeshConfig &config);
size_t decode_mesh_to_buffer(const DracoMesh &mesh, uint8_t *out_ptr, size_t out_len);