useragent_coinpayment/
types.rs1use serde::{Deserialize, Serialize};
2
3pub type PurseId = u32;
4pub const MAIN_PURSE: PurseId = u32::MAX;
5
6pub type Balance = u32;
7pub type Timestamp = u64;
8pub type ProductId = String;
9pub type Receivable = [u8; 32];
10pub type MerkleRoot = [u8; 32];
11pub type TransactionHash = [u8; 32];
12pub type CoinagePubKey = [u8; 32];
13
14#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
15#[serde(rename_all = "camelCase")]
16pub enum CoinPaymentProfile {
17 Simulated,
18 Staged,
19 Production,
20}
21
22#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
23pub struct CoinPaymentCapability {
24 pub version: u8,
25 pub profile: CoinPaymentProfile,
26 pub supports_statement_store_channel: bool,
27 pub supports_refund: bool,
28 pub supports_finality: bool,
29}
30
31#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
32pub struct PurseInfo {
33 pub name: String,
34 pub created: Timestamp,
35 pub creator: ProductId,
36 pub balance: Balance,
37}
38
39#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
40pub struct Cheque {
41 pub version: u8,
42 pub id: Receivable,
43 pub amount: Balance,
44 pub encrypted_secrets: Vec<u8>,
45}
46
47#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
48pub struct ClearingReference {
49 pub root: MerkleRoot,
50 pub leaves: Vec<(CoinagePubKey, TransactionHash)>,
51}
52
53#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
54#[serde(tag = "kind", rename_all = "camelCase")]
55pub enum Status {
56 Clearing {
57 clearing: Balance,
58 cleared: Balance,
59 },
60 Failed {
61 error: String,
62 cleared: Balance,
63 reference: ClearingReference,
64 },
65 Done {
66 cleared: Balance,
67 reference: ClearingReference,
68 },
69}
70
71#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
72#[serde(tag = "kind", rename_all = "camelCase")]
73pub enum TransmissionChannel {
74 Standard { sss_topic: [u8; 32] },
75}
76
77#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
78pub struct Invoice {
79 pub version: u8,
80 pub handoff: TransmissionChannel,
81 pub receiver: Receivable,
82 pub amount: Balance,
83}