canic_core/dto/capability/
mod.rs1use crate::dto::{
2 prelude::*,
3 rpc::{CyclesRequest, CyclesResponse, Request, Response},
4};
5
6pub const CAPABILITY_VERSION_V1: u16 = 1;
11
12#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq)]
17pub enum CapabilityService {
18 Root,
19}
20
21#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq)]
26pub struct CapabilityRequestMetadata {
27 pub request_id: [u8; 16],
28 pub nonce: [u8; 16],
29 pub issued_at_ns: u64,
30 pub ttl_ns: u64,
31}
32
33#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
38pub enum CapabilityProof {
39 Structural,
40}
41
42#[derive(CandidType, Clone, Debug, Deserialize)]
47pub struct RootCapabilityEnvelopeV1 {
48 pub service: CapabilityService,
49 pub capability_version: u16,
50 pub capability: Request,
51 pub proof: CapabilityProof,
52 pub metadata: CapabilityRequestMetadata,
53}
54
55#[derive(CandidType, Clone, Debug, Deserialize)]
60pub struct RootCapabilityResponseV1 {
61 pub response: Response,
62}
63
64#[derive(CandidType, Clone, Debug, Deserialize)]
69pub struct NonrootCyclesCapabilityEnvelopeV1 {
70 pub service: CapabilityService,
71 pub capability_version: u16,
72 pub capability: CyclesRequest,
73 pub proof: CapabilityProof,
74 pub metadata: CapabilityRequestMetadata,
75}
76
77#[derive(CandidType, Clone, Debug, Deserialize)]
82pub struct NonrootCyclesCapabilityResponseV1 {
83 pub response: CyclesResponse,
84}