Skip to main content

canic_core/dto/capability/
mod.rs

1use crate::dto::{
2    prelude::*,
3    rpc::{CyclesRequest, CyclesResponse, Request, Response},
4};
5
6//
7// CapabilityVersion
8//
9
10pub const CAPABILITY_VERSION_V1: u16 = 1;
11
12//
13// CapabilityService
14//
15
16#[derive(CandidType, Clone, Copy, Debug, Deserialize, Eq, PartialEq)]
17pub enum CapabilityService {
18    Root,
19}
20
21//
22// CapabilityRequestMetadata
23//
24
25#[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//
33// CapabilityProof
34//
35
36#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
37pub enum CapabilityProof {
38    Structural,
39}
40
41//
42// RootCapabilityEnvelopeV1
43//
44
45#[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//
55// RootCapabilityResponseV1
56//
57
58#[derive(CandidType, Clone, Debug, Deserialize)]
59pub struct RootCapabilityResponseV1 {
60    pub response: Response,
61}
62
63//
64// NonrootCyclesCapabilityEnvelopeV1
65//
66
67#[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//
77// NonrootCyclesCapabilityResponseV1
78//
79
80#[derive(CandidType, Clone, Debug, Deserialize)]
81pub struct NonrootCyclesCapabilityResponseV1 {
82    pub response: CyclesResponse,
83}