use serde::{Deserialize, Serialize};
pub const GGUF_TDF_PROFILE_V1: &str = "gguf-tdf/1";
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct GgufIndex {
pub profile: String,
pub alignment: u64,
#[serde(rename = "headerBytes")]
pub header_bytes: u64,
#[serde(rename = "virtualSize")]
pub virtual_size: u64,
#[serde(rename = "maxSegment")]
pub max_segment: u64,
pub tensors: Vec<GgufTensor>,
pub segments: Vec<GgufSegment>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct GgufTensor {
pub name: String,
pub offset: u64,
pub size: u64,
pub segments: [u64; 2],
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct GgufSegment {
pub id: u64,
pub kind: GgufSegmentKind,
pub plain: u64,
pub entry: String,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum GgufSegmentKind {
Header,
Tensor,
Pack,
}