Skip to main content

ic_auth_protocol_types/
logout.rs

1//! Caller-authenticated logout transport; no proof or target identity is accepted.
2use candid::CandidType;
3use serde::{Deserialize, Serialize};
4
5/// The host authenticates the caller and selects its installed trust domain.
6#[derive(Clone, Copy, Debug, Default, CandidType, Deserialize, Serialize, Eq, PartialEq)]
7pub struct LogoutRequest {}
8
9/// Acknowledges only this destination's committed revocation, never global logout.
10#[derive(Clone, Copy, Debug, CandidType, Deserialize, Serialize, Eq, PartialEq)]
11pub enum LogoutResult {
12    Revoked { deny_until_ns: u64 },
13    InvalidCaller,
14    Unavailable(LogoutUnavailable),
15}
16
17/// No successful revocation is implied; transport failures also remain unknown.
18#[derive(Clone, Copy, Debug, CandidType, Deserialize, Serialize, Eq, PartialEq)]
19pub enum LogoutUnavailable {
20    Capacity,
21    Storage,
22    Clock,
23    ResetPending,
24}