Skip to main content

canic_core/domain/
memory.rs

1//! Module: domain::memory
2//!
3//! Responsibility: define pure memory diagnostic value enums shared by memory
4//! ops and memory DTOs.
5//! Does not own: memory response DTO structs, stable memory records, or memory
6//! runtime mutation.
7//! Boundary: DTOs re-export these values to preserve the public API path while
8//! internal code imports them from the domain owner.
9
10use candid::CandidType;
11use serde::Deserialize;
12
13/// Source of a measured ID's binding; unknown does not mean unused.
14#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
15pub enum MemoryAllocationBinding {
16    Current { stable_key: String, owner: String },
17    Ledger { stable_key: String, owner: String },
18    Unknown,
19}
20
21///
22/// MemoryCommitRecoveryErrorResponse
23///
24
25#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq)]
26pub enum MemoryCommitRecoveryErrorResponse {
27    NoValidGeneration,
28    InvalidCommitSlots,
29    AmbiguousGeneration,
30    GenerationOverflow,
31    UnexpectedGeneration,
32    Unknown,
33}
34
35///
36/// MemoryRangeAuthorityMode
37///
38
39#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq)]
40pub enum MemoryRangeAuthorityMode {
41    Reserved,
42    Allowed,
43}
44
45///
46/// MemoryAllocationState
47///
48
49#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq)]
50pub enum MemoryAllocationState {
51    Reserved,
52    Active,
53    Retired,
54}