Skip to main content

runx_contracts/
packet_index.rs

1//! Packet index contract (`runx.packet.index.v1`): the manifest of materialized
2//! skill packets and their content hashes.
3use serde::{Deserialize, Serialize};
4
5use crate::schema::RunxSchema;
6
7#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, RunxSchema)]
8pub enum PacketIndexSchema {
9    #[serde(rename = "runx.packet.index.v1")]
10    V1,
11}
12
13#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, RunxSchema)]
14#[serde(deny_unknown_fields)]
15pub struct PacketIndexEntry {
16    pub id: String,
17    pub package: String,
18    pub version: String,
19    pub path: String,
20    pub sha256: String,
21}
22
23#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, RunxSchema)]
24#[serde(deny_unknown_fields)]
25#[runx_schema(id = "runx.packet.index.v1")]
26pub struct PacketIndex {
27    pub schema: PacketIndexSchema,
28    pub packets: Vec<PacketIndexEntry>,
29}