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