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; 32],
28 pub issued_at_ns: u64,
29 pub ttl_ns: u64,
30}
31
32#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
37pub enum CapabilityProof {
38 Structural,
39}
40
41#[derive(CandidType, Clone, Debug, Deserialize)]
46pub struct RootCapabilityEnvelopeV1 {
47 pub service: CapabilityService,
48 pub capability_version: u16,
49 pub capability: Request,
50 pub proof: CapabilityProof,
51 pub metadata: CapabilityRequestMetadata,
52}
53
54#[derive(CandidType, Clone, Debug, Deserialize)]
59pub struct RootCapabilityResponseV1 {
60 pub response: Response,
61}
62
63#[derive(CandidType, Clone, Debug, Deserialize)]
68pub struct NonrootCyclesCapabilityEnvelopeV1 {
69 pub service: CapabilityService,
70 pub capability_version: u16,
71 pub capability: CyclesRequest,
72 pub proof: CapabilityProof,
73 pub metadata: CapabilityRequestMetadata,
74}
75
76#[derive(CandidType, Clone, Debug, Deserialize)]
81pub struct NonrootCyclesCapabilityResponseV1 {
82 pub response: CyclesResponse,
83}