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; 16],
28    pub nonce: [u8; 16],
29    pub issued_at_ns: u64,
30    pub ttl_ns: u64,
31}
32
33//
34// CapabilityProof
35//
36
37#[derive(CandidType, Clone, Debug, Deserialize, Eq, PartialEq)]
38pub enum CapabilityProof {
39    Structural,
40}
41
42//
43// RootCapabilityEnvelopeV1
44//
45
46#[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//
56// RootCapabilityResponseV1
57//
58
59#[derive(CandidType, Clone, Debug, Deserialize)]
60pub struct RootCapabilityResponseV1 {
61    pub response: Response,
62}
63
64//
65// NonrootCyclesCapabilityEnvelopeV1
66//
67
68#[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//
78// NonrootCyclesCapabilityResponseV1
79//
80
81#[derive(CandidType, Clone, Debug, Deserialize)]
82pub struct NonrootCyclesCapabilityResponseV1 {
83    pub response: CyclesResponse,
84}