1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
4pub enum RelayerTxType {
5 #[serde(rename = "SAFE")]
6 Safe,
7 #[serde(rename = "PROXY")]
8 Proxy,
9}
10
11#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
12pub enum TransactionType {
13 #[serde(rename = "SAFE")]
14 SAFE,
15 #[serde(rename = "SAFE-CREATE")]
16 SafeCreate,
17 #[serde(rename = "PROXY")]
18 Proxy,
19}
20
21#[derive(Clone, Debug, Serialize, Deserialize, Default)]
22pub struct SignatureParams {
23 #[serde(skip_serializing_if = "Option::is_none", rename = "gasPrice")]
24 pub gas_price: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none", rename = "relayerFee")]
26 pub relayer_fee: Option<String>,
27 #[serde(skip_serializing_if = "Option::is_none", rename = "gasLimit")]
28 pub gas_limit: Option<String>,
29 #[serde(skip_serializing_if = "Option::is_none", rename = "relayHub")]
30 pub relay_hub: Option<String>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub relay: Option<String>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub operation: Option<String>,
35 #[serde(skip_serializing_if = "Option::is_none", rename = "safeTxnGas")]
37 pub safe_txn_gas: Option<String>,
38 #[serde(skip_serializing_if = "Option::is_none", rename = "baseGas")]
39 pub base_gas: Option<String>,
40 #[serde(skip_serializing_if = "Option::is_none", rename = "gasToken")]
41 pub gas_token: Option<String>,
42 #[serde(skip_serializing_if = "Option::is_none", rename = "refundReceiver")]
43 pub refund_receiver: Option<String>,
44
45 #[serde(skip_serializing_if = "Option::is_none", rename = "paymentToken")]
47 pub payment_token: Option<String>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub payment: Option<String>,
50 #[serde(skip_serializing_if = "Option::is_none", rename = "paymentReceiver")]
51 pub payment_receiver: Option<String>,
52}
53
54#[derive(Clone, Debug, Serialize, Deserialize)]
55pub struct NoncePayload {
56 pub nonce: String,
57}
58
59#[derive(Clone, Debug, Serialize, Deserialize)]
60pub struct TransactionRequest {
61 pub r#type: TransactionType,
62 pub from: String,
63 pub to: String,
64 #[serde(skip_serializing_if = "Option::is_none", rename = "proxyWallet")]
65 pub proxy_wallet: Option<String>,
66 pub data: String,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub nonce: Option<String>,
69 pub signature: String,
70 #[serde(rename = "signatureParams")]
71 pub signature_params: SignatureParams,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub metadata: Option<String>,
74}
75
76#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
77pub enum CallType {
78 #[serde(rename = "0")]
79 Invalid = 0,
80 #[serde(rename = "1")]
81 Call = 1,
82 #[serde(rename = "2")]
83 DelegateCall = 2,
84}
85
86#[derive(Clone, Debug, Serialize, Deserialize)]
87pub struct ProxyTransaction {
88 #[serde(rename = "to")]
89 pub to: String,
90 #[serde(rename = "typeCode")]
91 pub type_code: CallType,
92 pub data: String,
93 pub value: String,
94}
95
96#[derive(Clone, Debug, Serialize, Deserialize)]
97pub struct Transaction {
98 pub to: String,
99 pub data: String,
100 pub value: String,
101}
102
103#[derive(Clone, Debug, Serialize, Deserialize)]
104pub struct ProxyTransactionArgs {
105 pub from: String,
106 pub nonce: String,
107 #[serde(rename = "gasPrice")]
108 pub gas_price: String,
109 #[serde(skip_serializing_if = "Option::is_none", rename = "gasLimit")]
110 pub gas_limit: Option<String>,
111 pub data: String,
112 pub relay: String,
113}
114
115#[derive(Clone, Debug, Serialize, Deserialize)]
116pub struct RelayPayload {
117 pub address: String,
118 pub nonce: String,
119}
120
121#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
122pub enum OperationType {
123 Call = 0,
124 DelegateCall = 1,
125}
126
127#[derive(Clone, Debug, Serialize, Deserialize)]
128pub struct SafeTransaction {
129 pub to: String,
130 pub operation: OperationType,
131 pub data: String,
132 pub value: String,
133}
134
135#[derive(Clone, Debug, Serialize, Deserialize)]
136pub struct SafeTransactionArgs {
137 pub from: String,
138 pub nonce: String,
139 pub chain_id: u64,
140 pub transactions: Vec<SafeTransaction>,
141 #[serde(skip_serializing_if = "Option::is_none")]
144 pub safe_address: Option<String>,
145}
146
147#[derive(Clone, Debug, Serialize, Deserialize)]
148pub struct SafeCreateTransactionArgs {
149 pub from: String,
150 pub chain_id: u64,
151 pub payment_token: String,
152 pub payment: String,
153 pub payment_receiver: String,
154}
155
156#[derive(Clone, Debug, Serialize, Deserialize)]
157#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
158pub enum RelayerTransactionState {
159 #[serde(rename = "STATE_NEW")]
160 StateNew,
161 #[serde(rename = "STATE_EXECUTED")]
162 StateExecuted,
163 #[serde(rename = "STATE_MINED")]
164 StateMined,
165 #[serde(rename = "STATE_INVALID")]
166 StateInvalid,
167 #[serde(rename = "STATE_CONFIRMED")]
168 StateConfirmed,
169 #[serde(rename = "STATE_FAILED")]
170 StateFailed,
171}
172
173#[derive(Clone, Debug, Serialize, Deserialize)]
174pub struct RelayerTransaction {
175 pub transaction_id: String,
176 pub transaction_hash: String,
177 pub from: String,
178 pub to: String,
179 pub proxy_address: String,
180 pub data: String,
181 pub nonce: String,
182 pub value: String,
183 pub state: String,
184 pub r#type: String,
185 pub metadata: String,
186 pub created_at: String,
187 pub updated_at: String,
188}
189
190#[derive(Clone, Debug, Serialize, Deserialize)]
192pub struct RelayerErrorResponse {
193 #[serde(default)]
194 pub error: String,
195 #[serde(default)]
196 pub message: String,
197 #[serde(default)]
198 pub reason: String,
199 #[serde(default)]
200 pub code: Option<i32>,
201}
202
203#[derive(Clone, Debug, Serialize, Deserialize)]
204pub struct RelayerTransactionResponse {
205 #[serde(
207 default,
208 rename = "transactionID",
209 alias = "transactionId",
210 alias = "transaction_id",
211 alias = "id"
212 )]
213 pub transaction_id: String,
214
215 #[serde(default, alias = "status", alias = "state")]
216 pub state: String,
217
218 #[serde(default, alias = "txHash", alias = "hash")]
220 pub hash: String,
221
222 #[serde(default, rename = "transactionHash", alias = "transaction_hash")]
223 pub transaction_hash: String,
224
225 #[serde(default)]
227 pub error: Option<String>,
228 #[serde(default)]
229 pub message: Option<String>,
230 #[serde(default)]
231 pub reason: Option<String>,
232}
233
234#[derive(Clone, Debug, Serialize, Deserialize)]
235pub struct GetDeployedResponse {
236 pub deployed: bool,
237}