rain_sdk/models/
contracts.rs1use serde::{Deserialize, Serialize};
4use uuid::Uuid;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(rename_all = "camelCase")]
9pub struct ContractToken {
10 pub address: String,
11 pub balance: String,
12 #[serde(skip_serializing_if = "Option::is_none")]
13 pub exchange_rate: Option<f64>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 pub advance_rate: Option<f64>,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(rename_all = "camelCase")]
21pub struct AchOnramp {
22 pub beneficiary_name: String,
23 pub beneficiary_address: String,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub beneficiary_bank_name: Option<String>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub beneficiary_bank_address: Option<String>,
28 pub account_number: String,
29 pub routing_number: String,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(rename_all = "camelCase")]
35pub struct RtpOnramp {
36 pub beneficiary_name: String,
37 pub beneficiary_address: String,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub beneficiary_bank_name: Option<String>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub beneficiary_bank_address: Option<String>,
42 pub account_number: String,
43 pub routing_number: String,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(rename_all = "camelCase")]
49pub struct WireOnramp {
50 pub beneficiary_name: String,
51 pub beneficiary_address: String,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub beneficiary_bank_name: Option<String>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub beneficiary_bank_address: Option<String>,
56 pub account_number: String,
57 pub routing_number: String,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(rename_all = "camelCase")]
63pub struct Onramp {
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub ach: Option<AchOnramp>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub rtp: Option<RtpOnramp>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub wire: Option<WireOnramp>,
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
74#[serde(rename_all = "camelCase")]
75pub struct Contract {
76 pub id: Uuid,
77 pub chain_id: i64,
78 #[serde(skip_serializing_if = "Option::is_none")]
79 pub program_address: Option<String>, pub controller_address: String,
81 pub proxy_address: String,
82 pub deposit_address: String, pub tokens: Vec<ContractToken>,
84 pub contract_version: i64,
85 #[serde(skip_serializing_if = "Option::is_none")]
86 pub onramp: Option<Onramp>,
87}
88
89#[derive(Debug, Clone, Serialize, Deserialize)]
91#[serde(rename_all = "camelCase")]
92pub struct CreateCompanyContractRequest {
93 pub chain_id: i64,
94 pub owner_address: String,
95}
96
97#[derive(Debug, Clone, Serialize, Deserialize)]
99#[serde(rename_all = "camelCase")]
100pub struct CreateUserContractRequest {
101 pub chain_id: i64,
102}
103
104#[derive(Debug, Clone, Serialize, Deserialize)]
106#[serde(rename_all = "camelCase")]
107pub struct UpdateContractRequest {
108 pub onramp: bool,
109}
110
111pub type ListContractsResponse = Vec<Contract>;