use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::{
artifact::{UnsignedXcarchiveExpectation, UnsignedXcarchiveInspection},
protocol::IosDeviceBuildRequest,
source::{SourceArchive, SourceManifest},
};
pub const SEALED_UNSIGNED_ARCHIVE_SCHEMA_VERSION: u32 = 1;
pub const COMPILE_PHASE_EVIDENCE_SCHEMA_VERSION: u32 = 1;
pub const COMPILE_HANDOFF_SCHEMA_VERSION: u32 = 1;
#[derive(Clone, Debug, Eq, JsonSchema, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct SealedUnsignedArchive {
pub schema_version: u32,
pub transport: SourceArchive,
pub contents: SourceManifest,
pub expectation: UnsignedXcarchiveExpectation,
}
#[derive(Clone, Debug, Eq, JsonSchema, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct CompileToolchainEvidence {
pub worker_os: String,
pub worker_architecture: String,
pub xcode_version: String,
pub iphoneos_sdk_version: String,
pub iphoneos_sdk_build_version: String,
pub developer_directory_sha256: String,
pub rust_version: String,
pub rust_target: String,
}
#[derive(Clone, Debug, Eq, JsonSchema, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct CompilePhaseEvidence {
pub schema_version: u32,
pub job_id: String,
pub provider: String,
pub request_sha256: String,
pub source_sha256: String,
pub cargo_lock_sha256: String,
pub config_sha256: String,
pub rustferry_version: String,
pub worker_version: String,
pub toolchain: CompileToolchainEvidence,
pub sealed_archive: SealedUnsignedArchive,
pub archive_inspection: UnsignedXcarchiveInspection,
pub started_at_unix_seconds: u64,
pub finished_at_unix_seconds: u64,
}
#[derive(Clone, Debug, JsonSchema, PartialEq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct CompileHandoff {
pub schema_version: u32,
pub request: IosDeviceBuildRequest,
pub compile: CompilePhaseEvidence,
}