rain_sdk/models/
signatures.rs1use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5use uuid::Uuid;
6
7#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
9#[serde(rename_all = "lowercase")]
10pub enum SignatureStatus {
11 Pending,
12 Ready,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
17#[serde(rename_all = "camelCase")]
18pub struct SignatureData {
19 pub data: String,
20 pub salt: String,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
25#[serde(untagged)]
26pub enum PaymentSignatureResponse {
27 #[serde(rename_all = "camelCase")]
28 Pending {
29 status: SignatureStatus,
30 retry_after: i64,
31 },
32 #[serde(rename_all = "camelCase")]
33 Ready {
34 status: SignatureStatus,
35 signature: SignatureData,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 expires_at: Option<DateTime<Utc>>,
38 },
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
43#[serde(untagged)]
44pub enum WithdrawalSignatureResponse {
45 #[serde(rename_all = "camelCase")]
46 Pending {
47 status: SignatureStatus,
48 retry_after: i64,
49 },
50 #[serde(rename_all = "camelCase")]
51 Ready {
52 status: SignatureStatus,
53 signature: SignatureData,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 expires_at: Option<DateTime<Utc>>,
56 },
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
61#[serde(rename_all = "camelCase")]
62pub struct PaymentSignatureParams {
63 #[serde(skip_serializing_if = "Option::is_none")]
64 pub chain_id: Option<i64>,
65 pub token: String,
66 pub amount: String,
67 pub admin_address: String,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub is_amount_native: Option<bool>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub rain_collateral_contract_id: Option<Uuid>,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(rename_all = "camelCase")]
77pub struct WithdrawalSignatureParams {
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub chain_id: Option<i64>,
80 pub token: String,
81 pub amount: String,
82 pub admin_address: String,
83 pub recipient_address: String,
84 #[serde(skip_serializing_if = "Option::is_none")]
85 pub is_amount_native: Option<bool>,
86 #[serde(skip_serializing_if = "Option::is_none")]
87 pub rain_collateral_contract_id: Option<Uuid>,
88}