rustev_contract/
calibration.rs1use serde::{Deserialize, Serialize};
8
9use crate::decimal::Decimal;
10use crate::ids::{ArtifactId, CalibrationId, DatasetId};
11use crate::limits::DESCRIPTOR_V1;
12use crate::schema;
13
14#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
15#[serde(deny_unknown_fields)]
16pub struct CalibrationArtifact {
17 pub schema: String,
18 pub binding: CalibrationBinding,
19 pub options: Vec<String>,
21 pub parameters: CalibrationParameters,
22}
23
24crate::document::document!(
25 CalibrationArtifact,
26 schema::CALIBRATION,
27 DESCRIPTOR_V1,
28 CalibrationId
29);
30
31#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
33#[serde(deny_unknown_fields)]
34pub struct CalibrationBinding {
35 pub artifact: ArtifactId,
36 pub task: String,
37 pub question: String,
39 pub dataset: DatasetId,
40 pub method: CalibrationMethod,
41}
42
43#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
45pub enum CalibrationMethod {
46 #[serde(rename = "temperature/1")]
48 Temperature1,
49}
50
51#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
52#[serde(rename_all = "snake_case", deny_unknown_fields)]
53pub enum CalibrationParameters {
54 Temperature { temperature: Decimal },
56}