use crate::ids::{ManagedCanisterBinding, ReleaseBuildId};
use candid::{CandidType, Principal};
use serde::{Deserialize, Serialize};
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct FixtureChunkDescriptor {
pub digest: [u8; 32],
pub length: u32,
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct FixtureDescriptor {
pub schema_version: u16,
pub format_hash: [u8; 32],
pub encoded_length: u64,
pub chunks: Vec<FixtureChunkDescriptor>,
pub completion_summary: [u8; 32],
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct FixtureChunkUpload {
pub content_id: [u8; 32],
pub index: u32,
pub bytes: Vec<u8>,
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct FixtureSourceStatus {
pub content_id: [u8; 32],
pub next_chunk: u32,
pub chunk_count: u32,
pub received_bytes: u64,
pub complete: bool,
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct FixtureTargetBinding {
pub target: ManagedCanisterBinding,
pub installation: [u8; 32],
pub release_build_id: ReleaseBuildId,
pub content_id: [u8; 32],
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct FixtureGrantRequest {
pub expected_revision: u64,
pub binding: FixtureTargetBinding,
pub enabled: bool,
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct FixtureGrant {
pub revision: u64,
pub binding: FixtureTargetBinding,
pub enabled: bool,
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct FixtureChunkRead {
pub grant: FixtureGrant,
pub index: u32,
}
#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub enum FixtureStoreError {
Authority,
Bounds,
Capacity,
Conflict,
Content,
NotFound,
NotReady,
Sequence,
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct FixtureAssignment {
pub store: Principal,
pub grant: FixtureGrant,
pub descriptor: FixtureDescriptor,
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct FixtureImportReceipt {
pub binding: FixtureTargetBinding,
pub completion_summary: [u8; 32],
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct FixtureImportProgress {
pub binding: FixtureTargetBinding,
pub next_chunk: u32,
pub receipt: Option<Box<FixtureImportReceipt>>,
}
#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub enum FixtureProvisioningStatus {
NotRequired,
AwaitingImporter,
Pending(Option<Box<FixtureImportProgress>>),
Complete(Box<FixtureImportReceipt>),
Failed(FixtureImportFailure),
}
#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub enum FixtureImportError {
Application { code: u32 },
Authority,
Busy,
Codec(crate::dto::error::Error),
ImporterMissing,
NotReady,
Progress,
Receipt,
Registration,
Runtime(crate::dto::error::Error),
Source(FixtureStoreError),
SourceRejected(crate::dto::error::Error),
Transport(crate::dto::error::Error),
}
pub use crate::domain::fixture_import::FixtureImportFailure;