use serde::Serialize;
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "snake_case")]
pub struct PlannedChunkIo {
pub chunk_index: Vec<u64>,
pub payload_offset: u64,
pub stored_byte_len: u64,
pub raw_byte_len: u64,
pub codec: u32,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "snake_case")]
pub struct ReadPlan {
pub chunk_touch_policy: &'static str,
pub chunk_count: usize,
pub total_stored_bytes: u64,
pub chunks: Vec<PlannedChunkIo>,
pub dataset_shape: Vec<u64>,
pub chunk_shape: Vec<u64>,
pub selection_box_start: Vec<u64>,
pub selection_box_stop_exclusive: Vec<u64>,
pub selection_step: Vec<u64>,
pub logical_selection_shape: Vec<u64>,
pub logical_f32_element_count: usize,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ChunkTouchPolicy {
pub dense_half_open_unit_step: &'static str,
pub strided_half_open: &'static str,
}
pub const CHUNK_TOUCH_POLICY: ChunkTouchPolicy = ChunkTouchPolicy {
dense_half_open_unit_step: "dense_half_open_intervals_per_axis_json_step_ignored_for_chunk_touch_list",
strided_half_open: "strided_half_open_per_axis_json_step_applied_to_chunk_touch_list",
};