1use crate::{
2 helper::{serialize_bool_as_string, serialize_datetime_as_string, PaginationParams},
3 types::Blockchain,
4};
5use chrono::{DateTime, Utc};
6use serde::{Deserialize, Serialize};
7
8#[derive(Clone, Debug, Serialize, Deserialize)]
9#[serde(rename_all = "UPPERCASE")]
10pub enum FeeLevel {
11 Low,
12 Medium,
13 High,
14}
15
16impl FeeLevel {
17 pub fn as_str(&self) -> &'static str {
18 match self {
19 FeeLevel::Low => "LOW",
20 FeeLevel::Medium => "MEDIUM",
21 FeeLevel::High => "HIGH",
22 }
23 }
24}
25
26#[derive(Debug, Serialize, Deserialize)]
28#[serde(rename_all = "camelCase")]
29pub struct CreateDevWalletRequest {
30 pub wallet_set_id: String,
32
33 pub entity_secret_ciphertext: String,
35
36 pub blockchains: Vec<Blockchain>,
38
39 pub idempotency_key: String,
41
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub account_type: Option<String>,
45
46 #[serde(skip_serializing_if = "Option::is_none")]
48 pub count: Option<u32>,
49
50 #[serde(skip_serializing_if = "Option::is_none")]
52 pub metadata: Option<Vec<DevWalletMetadata>>,
53
54 #[serde(skip_serializing_if = "Option::is_none")]
56 pub name: Option<String>,
57
58 #[serde(skip_serializing_if = "Option::is_none")]
60 pub ref_id: Option<String>,
61}
62
63#[derive(Debug, Serialize, Deserialize, Clone)]
65#[serde(rename_all = "camelCase")]
66pub struct DevWalletMetadata {
67 #[serde(skip_serializing_if = "Option::is_none")]
69 pub name: Option<String>,
70
71 #[serde(skip_serializing_if = "Option::is_none")]
73 pub ref_id: Option<String>,
74}
75
76#[derive(Debug, Serialize, Deserialize)]
78#[serde(rename_all = "camelCase")]
79pub struct UpdateDevWalletRequest {
80 #[serde(skip_serializing_if = "Option::is_none")]
82 pub name: Option<String>,
83
84 #[serde(skip_serializing_if = "Option::is_none")]
86 pub ref_id: Option<String>,
87}
88
89#[derive(Debug, Deserialize, Serialize)]
91#[serde(rename_all = "camelCase")]
92pub struct DevWalletResponse {
93 pub wallet: DevWallet,
94}
95
96#[derive(Debug, Deserialize, Serialize, Clone)]
98#[serde(rename_all = "camelCase")]
99pub struct DevWallet {
100 pub id: String,
102
103 pub address: String,
105
106 pub blockchain: Blockchain,
108
109 pub create_date: DateTime<Utc>,
111
112 pub update_date: DateTime<Utc>,
114
115 pub custody_type: String,
117
118 #[serde(skip_serializing_if = "Option::is_none")]
120 pub name: Option<String>,
121
122 #[serde(skip_serializing_if = "Option::is_none")]
124 pub ref_id: Option<String>,
125
126 pub state: String,
128
129 #[serde(skip_serializing_if = "Option::is_none")]
131 pub user_id: Option<String>,
132
133 pub wallet_set_id: String,
135
136 #[serde(skip_serializing_if = "Option::is_none")]
138 pub initial_public_key: Option<String>,
139
140 pub account_type: String,
142}
143
144#[derive(Debug, Serialize, Deserialize)]
146#[serde(rename_all = "camelCase")]
147pub struct SignMessageRequest {
148 pub entity_secret_ciphertext: String,
150
151 pub message: String,
153
154 pub wallet_id: String,
156
157 #[serde(skip_serializing_if = "Option::is_none")]
159 pub encoded_by_hex: Option<bool>,
160
161 #[serde(skip_serializing_if = "Option::is_none")]
163 pub memo: Option<String>,
164}
165
166#[derive(Debug, Serialize, Deserialize)]
168#[serde(rename_all = "camelCase")]
169pub struct SignDataRequest {
170 pub entity_secret_ciphertext: String,
172
173 pub data: String,
175
176 pub wallet_id: String,
178
179 #[serde(skip_serializing_if = "Option::is_none")]
181 pub memo: Option<String>,
182}
183
184#[derive(Debug, Serialize, Deserialize)]
186#[serde(rename_all = "camelCase")]
187pub struct SignTransactionRequest {
188 pub entity_secret_ciphertext: String,
190
191 #[serde(skip_serializing_if = "Option::is_none")]
193 pub raw_transaction: Option<String>,
194
195 #[serde(skip_serializing_if = "Option::is_none")]
197 pub transaction: Option<String>,
198
199 pub wallet_id: String,
201
202 #[serde(skip_serializing_if = "Option::is_none")]
204 pub memo: Option<String>,
205}
206
207#[derive(Debug, Deserialize, Serialize)]
209#[serde(rename_all = "camelCase")]
210pub struct SignTransactionResponse {
211 pub signature: String,
213
214 pub signed_transaction: String,
216
217 #[serde(skip_serializing_if = "Option::is_none")]
219 pub tx_hash: Option<String>,
220}
221
222#[derive(Debug, Serialize, Deserialize)]
224#[serde(rename_all = "camelCase")]
225pub struct SignDelegateRequest {
226 pub entity_secret_ciphertext: String,
228
229 pub unsigned_delegate_action: String,
231
232 pub wallet_id: String,
234}
235
236#[derive(Debug, Deserialize, Serialize)]
238#[serde(rename_all = "camelCase")]
239pub struct SignDelegateResponse {
240 pub signature: String,
242
243 pub signed_delegate_action: String,
245}
246
247#[derive(Debug, Deserialize, Serialize)]
249pub struct DevWalletsResponse {
250 pub wallets: Vec<DevWallet>,
251}
252
253#[derive(Debug, Deserialize, Serialize)]
255pub struct SignatureResponse {
256 pub signature: String,
258}
259
260pub enum AccountType {
262 Eoa,
263 Sca,
264}
265
266impl AccountType {
267 pub fn as_str(&self) -> &'static str {
268 match self {
269 AccountType::Eoa => "EOA",
270 AccountType::Sca => "SCA",
271 }
272 }
273}
274
275#[derive(Debug, Serialize, Default)]
277#[serde(rename_all = "camelCase")]
278pub struct ListDevWalletsParams {
279 #[serde(skip_serializing_if = "Option::is_none")]
281 pub address: Option<String>,
282
283 #[serde(skip_serializing_if = "Option::is_none")]
285 pub blockchain: Option<String>,
286
287 #[serde(skip_serializing_if = "Option::is_none")]
289 pub sca_core: Option<String>,
290
291 #[serde(rename = "walletSetId", skip_serializing_if = "Option::is_none")]
293 pub wallet_set_id: Option<String>,
294
295 #[serde(rename = "refId", skip_serializing_if = "Option::is_none")]
297 pub ref_id: Option<String>,
298
299 #[serde(
301 skip_serializing_if = "Option::is_none",
302 serialize_with = "serialize_datetime_as_string"
303 )]
304 pub from: Option<DateTime<Utc>>,
305
306 #[serde(
308 skip_serializing_if = "Option::is_none",
309 serialize_with = "serialize_datetime_as_string"
310 )]
311 pub to: Option<DateTime<Utc>>,
312
313 #[serde(flatten)]
315 pub pagination: PaginationParams,
316
317 #[serde(skip_serializing_if = "Option::is_none")]
318 pub order: Option<String>,
319}
320
321#[derive(Debug, Serialize, Default, Deserialize)]
323#[serde(rename_all = "camelCase")]
324pub struct ListWalletsWithBalancesParams {
325 pub blockchain: String,
327
328 #[serde(skip_serializing_if = "Option::is_none")]
330 pub address: Option<String>,
331
332 #[serde(skip_serializing_if = "Option::is_none")]
334 pub sca_core: Option<String>,
335
336 #[serde(skip_serializing_if = "Option::is_none")]
338 pub wallet_set_id: Option<String>,
339
340 #[serde(skip_serializing_if = "Option::is_none")]
342 pub ref_id: Option<String>,
343
344 #[serde(skip_serializing_if = "Option::is_none", rename = "amount__gte")]
348 pub amount_gte: Option<String>,
349
350 #[serde(skip_serializing_if = "Option::is_none")]
352 pub token_address: Option<String>,
353
354 #[serde(
356 skip_serializing_if = "Option::is_none",
357 serialize_with = "serialize_datetime_as_string"
358 )]
359 pub from: Option<DateTime<Utc>>,
360
361 #[serde(
363 skip_serializing_if = "Option::is_none",
364 serialize_with = "serialize_datetime_as_string"
365 )]
366 pub to: Option<DateTime<Utc>>,
367
368 #[serde(flatten)]
370 pub pagination: PaginationParams,
371}
372
373#[derive(Debug, Serialize, Default, Deserialize)]
375#[serde(rename_all = "camelCase")]
376pub struct QueryParams {
377 #[serde(
379 skip_serializing_if = "Option::is_none",
380 serialize_with = "serialize_bool_as_string"
381 )]
382 pub include_all: Option<bool>,
383
384 #[serde(skip_serializing_if = "Option::is_none")]
386 pub name: Option<String>,
387
388 #[serde(skip_serializing_if = "Option::is_none")]
390 pub token_address: Option<String>,
391
392 #[serde(skip_serializing_if = "Option::is_none")]
396 pub standard: Option<String>,
397
398 #[serde(flatten)]
400 pub pagination: PaginationParams,
401}
402
403#[derive(Debug, Serialize, Default, Deserialize)]
405#[serde(rename_all = "camelCase")]
406pub struct ListTransactionsParams {
407 #[serde(skip_serializing_if = "Option::is_none")]
409 pub blockchain: Option<String>,
410
411 #[serde(skip_serializing_if = "Option::is_none")]
413 pub custody_type: Option<String>,
414
415 #[serde(skip_serializing_if = "Option::is_none")]
417 pub destination_address: Option<String>,
418
419 #[serde(
421 skip_serializing_if = "Option::is_none",
422 serialize_with = "serialize_bool_as_string"
423 )]
424 pub include_all: Option<bool>,
425
426 #[serde(skip_serializing_if = "Option::is_none")]
428 pub operation: Option<String>,
429
430 #[serde(skip_serializing_if = "Option::is_none")]
432 pub state: Option<String>,
433
434 #[serde(skip_serializing_if = "Option::is_none")]
436 pub tx_hash: Option<String>,
437
438 #[serde(skip_serializing_if = "Option::is_none")]
440 pub tx_type: Option<String>,
441
442 #[serde(skip_serializing_if = "Option::is_none")]
444 pub wallet_ids: Option<String>,
445
446 #[serde(
448 skip_serializing_if = "Option::is_none",
449 serialize_with = "serialize_datetime_as_string"
450 )]
451 pub from: Option<DateTime<Utc>>,
452
453 #[serde(
455 skip_serializing_if = "Option::is_none",
456 serialize_with = "serialize_datetime_as_string"
457 )]
458 pub to: Option<DateTime<Utc>>,
459
460 #[serde(skip_serializing_if = "Option::is_none")]
463 pub order: Option<String>,
464
465 #[serde(flatten)]
467 pub pagination: PaginationParams,
468}
469
470#[derive(Debug, Serialize, Default, Deserialize)]
472#[serde(rename_all = "camelCase")]
473pub struct TransactionParams {
474 pub tx_type: String,
476}
477
478#[derive(Debug, Deserialize, Serialize)]
480#[serde(rename_all = "camelCase")]
481pub struct TokenBalancesResponse {
482 pub token_balances: Vec<TokenBalance>,
483}
484
485#[derive(Debug, Deserialize, Serialize)]
487#[serde(rename_all = "camelCase")]
488pub struct TokenBalance {
489 pub amount: String,
491
492 pub token: Token,
494
495 pub update_date: DateTime<Utc>,
497}
498
499#[derive(Debug, Deserialize, Serialize)]
501#[serde(rename_all = "camelCase")]
502pub struct Token {
503 pub id: String,
505
506 pub name: Option<String>,
508
509 pub standard: Option<String>,
511
512 pub blockchain: String,
514
515 pub decimals: Option<u32>,
517
518 pub is_native: bool,
520
521 pub symbol: Option<String>,
523
524 pub token_address: Option<String>,
526
527 pub update_date: DateTime<Utc>,
529
530 pub create_date: DateTime<Utc>,
532}
533
534#[derive(Debug, Deserialize, Serialize)]
536#[serde(rename_all = "camelCase")]
537pub struct WalletsWithBalancesResponse {
538 pub wallets: Vec<WalletWithBalances>,
539}
540
541#[derive(Debug, Deserialize, Serialize)]
543#[serde(rename_all = "camelCase")]
544pub struct WalletWithBalances {
545 pub id: String,
547
548 pub address: String,
550
551 pub blockchain: String,
553
554 pub create_date: DateTime<Utc>,
556
557 pub update_date: DateTime<Utc>,
559
560 pub custody_type: String,
562
563 #[serde(skip_serializing_if = "Option::is_none")]
565 pub name: Option<String>,
566
567 #[serde(skip_serializing_if = "Option::is_none")]
569 pub ref_id: Option<String>,
570
571 pub state: String,
573
574 #[serde(skip_serializing_if = "Option::is_none")]
576 pub user_id: Option<String>,
577
578 pub wallet_set_id: String,
580
581 #[serde(skip_serializing_if = "Option::is_none")]
583 pub initial_public_key: Option<String>,
584
585 pub account_type: String,
587
588 pub token_balances: Vec<TokenBalance>,
590}
591
592#[derive(Debug, Deserialize, Serialize)]
594#[serde(rename_all = "camelCase")]
595pub struct NftsResponse {
596 pub nfts: Vec<Nft>,
597}
598
599#[derive(Debug, Deserialize, Serialize)]
601#[serde(rename_all = "camelCase")]
602pub struct Nft {
603 pub amount: String,
605
606 pub metadata: Option<String>,
608
609 pub nft_token_id: Option<String>,
611
612 pub token: Token,
614
615 pub update_date: DateTime<Utc>,
617}
618
619#[derive(Debug, Deserialize, Serialize)]
621#[serde(rename_all = "camelCase")]
622pub struct TransactionsResponse {
623 pub transactions: Vec<Transaction>,
624}
625
626#[derive(Debug, Deserialize, Serialize)]
628#[serde(rename_all = "camelCase")]
629pub struct TransactionResponse {
630 pub transaction: Transaction,
631}
632
633#[derive(Debug, Deserialize, Serialize)]
635#[serde(rename_all = "camelCase")]
636pub struct Transaction {
637 pub id: String,
639
640 #[serde(skip_serializing_if = "Option::is_none")]
642 pub abi_function_signature: Option<String>,
643
644 #[serde(skip_serializing_if = "Option::is_none")]
646 pub abi_parameters: Option<Vec<serde_json::Value>>,
647
648 #[serde(skip_serializing_if = "Option::is_none")]
650 pub amounts: Option<Vec<String>>,
651
652 #[serde(skip_serializing_if = "Option::is_none")]
654 pub amount_in_usd: Option<String>,
655
656 #[serde(skip_serializing_if = "Option::is_none")]
658 pub block_hash: Option<String>,
659
660 #[serde(skip_serializing_if = "Option::is_none")]
662 pub block_height: Option<i64>,
663
664 pub blockchain: String,
666
667 #[serde(skip_serializing_if = "Option::is_none")]
669 pub contract_address: Option<String>,
670
671 pub create_date: DateTime<Utc>,
673
674 #[serde(skip_serializing_if = "Option::is_none")]
676 pub custody_type: Option<String>,
677
678 #[serde(skip_serializing_if = "Option::is_none")]
680 pub destination_address: Option<String>,
681
682 #[serde(skip_serializing_if = "Option::is_none")]
684 pub error_reason: Option<String>,
685
686 #[serde(skip_serializing_if = "Option::is_none")]
688 pub error_details: Option<String>,
689
690 #[serde(skip_serializing_if = "Option::is_none")]
692 pub estimated_fee: Option<EstimatedFee>,
693
694 #[serde(skip_serializing_if = "Option::is_none")]
696 pub first_confirm_date: Option<DateTime<Utc>>,
697
698 #[serde(skip_serializing_if = "Option::is_none")]
700 pub network_fee: Option<String>,
701
702 #[serde(skip_serializing_if = "Option::is_none")]
704 pub network_fee_in_usd: Option<String>,
705
706 #[serde(skip_serializing_if = "Option::is_none")]
708 pub nfts: Option<Vec<String>>,
709
710 #[serde(skip_serializing_if = "Option::is_none")]
712 pub operation: Option<String>,
713
714 #[serde(skip_serializing_if = "Option::is_none")]
716 pub ref_id: Option<String>,
717
718 #[serde(skip_serializing_if = "Option::is_none")]
720 pub source_address: Option<String>,
721
722 pub state: String,
724
725 #[serde(skip_serializing_if = "Option::is_none")]
727 pub token_id: Option<String>,
728
729 pub transaction_type: String,
731
732 #[serde(skip_serializing_if = "Option::is_none")]
734 pub tx_hash: Option<String>,
735
736 pub update_date: DateTime<Utc>,
738
739 #[serde(skip_serializing_if = "Option::is_none")]
741 pub user_id: Option<String>,
742
743 #[serde(skip_serializing_if = "Option::is_none")]
745 pub wallet_id: Option<String>,
746
747 #[serde(skip_serializing_if = "Option::is_none")]
749 pub transaction_screening_evaluation: Option<TransactionScreeningEvaluation>,
750}
751
752#[derive(Debug, Deserialize, Serialize)]
754#[serde(rename_all = "camelCase")]
755pub struct EstimatedFee {
756 #[serde(skip_serializing_if = "Option::is_none")]
758 pub gas_limit: Option<String>,
759
760 #[serde(skip_serializing_if = "Option::is_none")]
762 pub gas_price: Option<String>,
763
764 #[serde(skip_serializing_if = "Option::is_none")]
766 pub max_fee: Option<String>,
767
768 #[serde(skip_serializing_if = "Option::is_none")]
770 pub priority_fee: Option<String>,
771
772 #[serde(skip_serializing_if = "Option::is_none")]
774 pub base_fee: Option<String>,
775
776 #[serde(skip_serializing_if = "Option::is_none")]
778 pub network_fee: Option<String>,
779
780 #[serde(skip_serializing_if = "Option::is_none")]
782 pub network_fee_raw: Option<String>,
783
784 #[serde(skip_serializing_if = "Option::is_none")]
786 pub fee_level: Option<String>,
787}
788
789#[derive(Debug, Deserialize, Serialize)]
791#[serde(rename_all = "camelCase")]
792pub struct TransactionScreeningEvaluation {
793 #[serde(skip_serializing_if = "Option::is_none")]
795 pub rule_name: Option<String>,
796
797 #[serde(skip_serializing_if = "Option::is_none")]
799 pub actions: Option<Vec<String>>,
800
801 #[serde(skip_serializing_if = "Option::is_none")]
803 pub screening_date: Option<DateTime<Utc>>,
804
805 #[serde(skip_serializing_if = "Option::is_none")]
807 pub reasons: Option<Vec<RiskSignal>>,
808}
809
810#[derive(Debug, Deserialize, Serialize)]
812#[serde(rename_all = "camelCase")]
813pub struct RiskSignal {
814 pub source: String,
816
817 pub source_value: String,
819
820 pub risk_score: String,
822
823 pub risk_categories: Vec<String>,
825
826 pub r#type: String,
828}
829
830#[derive(Debug, Serialize, Deserialize)]
832#[serde(rename_all = "camelCase")]
833pub struct CreateTransferTransactionRequest {
834 pub wallet_id: Option<String>,
836
837 pub wallet_address: Option<String>,
839
840 pub entity_secret_ciphertext: String,
842
843 pub destination_address: String,
845
846 pub idempotency_key: String,
848
849 pub amounts: Vec<String>,
851
852 #[serde(skip_serializing_if = "Option::is_none")]
855 pub fee_level: Option<FeeLevel>,
856
857 #[serde(skip_serializing_if = "Option::is_none")]
859 pub gas_limit: Option<String>,
860
861 #[serde(skip_serializing_if = "Option::is_none")]
864 pub gas_price: Option<String>,
865
866 #[serde(skip_serializing_if = "Option::is_none")]
869 pub max_fee: Option<String>,
870
871 #[serde(skip_serializing_if = "Option::is_none")]
874 pub priority_fee: Option<String>,
875
876 #[serde(skip_serializing_if = "Option::is_none")]
879 pub nft_token_ids: Option<Vec<String>>,
880
881 #[serde(skip_serializing_if = "Option::is_none")]
883 pub ref_id: Option<String>,
884
885 #[serde(skip_serializing_if = "Option::is_none")]
887 pub token_id: Option<String>,
888
889 #[serde(skip_serializing_if = "Option::is_none")]
891 pub token_address: Option<String>,
892
893 #[serde(skip_serializing_if = "Option::is_none")]
896 pub blockchain: Option<Blockchain>,
897}
898
899#[derive(Debug, Deserialize, Serialize)]
902#[serde(rename_all = "camelCase")]
903pub struct CreateTransferTransactionResponse {
904 pub id: String,
906
907 pub state: String,
909}
910
911#[derive(Debug, Serialize, Deserialize)]
913pub struct ValidateAddressBody {
914 pub address: String,
915}
916
917#[derive(Debug, Deserialize, Serialize)]
919#[serde(rename_all = "camelCase")]
920pub struct ValidateAddressResponse {
921 pub is_valid: bool,
922}
923
924#[derive(Debug, Serialize, Clone, Deserialize)]
926#[serde(untagged)]
927pub enum AbiParameter {
928 String(String),
929 Integer(i64),
930 Boolean(bool),
931 Array(Vec<AbiParameter>),
932}
933
934#[derive(Debug, Serialize, Deserialize)]
936#[serde(rename_all = "camelCase")]
937pub struct EstimateContractExecutionFeeBody {
938 pub contract_address: String,
940
941 #[serde(skip_serializing_if = "Option::is_none")]
944 pub abi_function_signature: Option<String>,
945
946 #[serde(skip_serializing_if = "Option::is_none")]
949 pub abi_parameters: Option<Vec<AbiParameter>>,
950
951 #[serde(skip_serializing_if = "Option::is_none")]
954 pub call_data: Option<String>,
955
956 #[serde(skip_serializing_if = "Option::is_none")]
958 pub amount: Option<String>,
959
960 #[serde(skip_serializing_if = "Option::is_none")]
963 pub blockchain: Option<String>,
964
965 #[serde(skip_serializing_if = "Option::is_none")]
968 pub source_address: Option<String>,
969
970 #[serde(skip_serializing_if = "Option::is_none")]
973 pub wallet_id: Option<String>,
974}
975
976#[derive(Debug, Deserialize, Serialize)]
978#[serde(rename_all = "camelCase")]
979pub struct EstimateContractExecutionFeeResponse {
980 pub high: EstimatedFee,
982
983 pub low: EstimatedFee,
985
986 pub medium: EstimatedFee,
988
989 #[serde(skip_serializing_if = "Option::is_none")]
991 pub call_gas_limit: Option<String>,
992
993 #[serde(skip_serializing_if = "Option::is_none")]
995 pub verification_gas_limit: Option<String>,
996
997 #[serde(skip_serializing_if = "Option::is_none")]
999 pub pre_verification_gas: Option<String>,
1000}
1001
1002#[derive(Debug, Serialize, Deserialize)]
1004#[serde(rename_all = "camelCase")]
1005pub struct EstimateTransferFeeRequest {
1006 pub destination_address: String,
1008
1009 pub amounts: Vec<String>,
1012
1013 #[serde(skip_serializing_if = "Option::is_none")]
1016 pub nft_token_ids: Option<Vec<String>>,
1017
1018 #[serde(skip_serializing_if = "Option::is_none")]
1021 pub source_address: Option<String>,
1022
1023 #[serde(skip_serializing_if = "Option::is_none")]
1026 pub token_id: Option<String>,
1027
1028 #[serde(skip_serializing_if = "Option::is_none")]
1031 pub token_address: Option<String>,
1032
1033 #[serde(skip_serializing_if = "Option::is_none")]
1036 pub blockchain: Option<String>,
1037
1038 #[serde(skip_serializing_if = "Option::is_none")]
1041 pub wallet_id: Option<String>,
1042}
1043
1044pub type EstimateTransferFeeResponse = EstimateContractExecutionFeeResponse;
1047
1048#[derive(Debug, Serialize, Clone, Deserialize)]
1050#[serde(untagged)]
1051pub enum ContractAbiParameter {
1052 String(String),
1053 Integer(i64),
1054 Boolean(bool),
1055 Array(Vec<ContractAbiParameter>),
1056}
1057
1058#[derive(Debug, Serialize, Deserialize)]
1060#[serde(rename_all = "camelCase")]
1061pub struct QueryContractRequest {
1062 pub blockchain: String,
1064
1065 pub address: String,
1067
1068 #[serde(skip_serializing_if = "Option::is_none")]
1071 pub abi_function_signature: Option<String>,
1072
1073 #[serde(skip_serializing_if = "Option::is_none")]
1076 pub abi_parameters: Option<Vec<ContractAbiParameter>>,
1077
1078 #[serde(skip_serializing_if = "Option::is_none")]
1080 pub abi_json: Option<String>,
1081
1082 #[serde(skip_serializing_if = "Option::is_none")]
1085 pub call_data: Option<String>,
1086
1087 #[serde(skip_serializing_if = "Option::is_none")]
1089 pub from_address: Option<String>,
1090}
1091
1092#[derive(Debug, Deserialize, Serialize, Clone)]
1094#[serde(untagged)]
1095pub enum ContractOutputValue {
1096 String(String),
1097 Number(f64),
1098 Boolean(bool),
1099}
1100
1101#[derive(Debug, Deserialize, Serialize)]
1103#[serde(rename_all = "camelCase")]
1104pub struct QueryContractResponse {
1105 #[serde(skip_serializing_if = "Option::is_none")]
1108 pub output_values: Option<Vec<ContractOutputValue>>,
1109
1110 pub output_data: String,
1112}
1113
1114#[derive(Debug, Clone, Serialize, Deserialize)]
1116pub enum ScaCore {
1117 #[serde(rename = "circle_6900_singleowner_v3")]
1118 Circle6900SingleownerV3,
1119}
1120
1121impl ScaCore {
1122 pub fn as_str(&self) -> &'static str {
1123 match self {
1124 ScaCore::Circle6900SingleownerV3 => "circle_6900_singleowner_v3",
1125 }
1126 }
1127}
1128
1129#[derive(Debug, Serialize, Deserialize)]
1131#[serde(rename_all = "camelCase")]
1132pub struct CreateWalletUpgradeTransactionRequest {
1133 pub wallet_id: String,
1135
1136 pub entity_secret_ciphertext: String,
1138
1139 pub new_sca_core: String,
1141
1142 pub idempotency_key: String,
1144
1145 #[serde(skip_serializing_if = "Option::is_none")]
1148 pub fee_level: Option<FeeLevel>,
1149
1150 #[serde(skip_serializing_if = "Option::is_none")]
1152 pub gas_limit: Option<String>,
1153
1154 #[serde(skip_serializing_if = "Option::is_none")]
1157 pub gas_price: Option<String>,
1158
1159 #[serde(skip_serializing_if = "Option::is_none")]
1162 pub max_fee: Option<String>,
1163
1164 #[serde(skip_serializing_if = "Option::is_none")]
1167 pub priority_fee: Option<String>,
1168
1169 #[serde(skip_serializing_if = "Option::is_none")]
1171 pub ref_id: Option<String>,
1172}
1173
1174#[derive(Debug, Deserialize, Serialize)]
1176#[serde(rename_all = "camelCase")]
1177pub struct CreateWalletUpgradeTransactionResponse {
1178 pub id: String,
1180
1181 pub state: String,
1183}
1184
1185#[derive(Debug, Serialize, Deserialize)]
1187#[serde(rename_all = "camelCase")]
1188pub struct CreateContractExecutionTransactionRequest {
1189 pub wallet_id: String,
1191
1192 pub entity_secret_ciphertext: String,
1194
1195 pub contract_address: String,
1197
1198 pub idempotency_key: String,
1200
1201 #[serde(skip_serializing_if = "Option::is_none")]
1204 pub abi_function_signature: Option<String>,
1205
1206 #[serde(skip_serializing_if = "Option::is_none")]
1209 pub abi_parameters: Option<Vec<AbiParameter>>,
1210
1211 #[serde(skip_serializing_if = "Option::is_none")]
1214 pub call_data: Option<String>,
1215
1216 #[serde(skip_serializing_if = "Option::is_none")]
1218 pub amount: Option<String>,
1219
1220 #[serde(skip_serializing_if = "Option::is_none")]
1223 pub fee_level: Option<FeeLevel>,
1224
1225 #[serde(skip_serializing_if = "Option::is_none")]
1227 pub gas_limit: Option<String>,
1228
1229 #[serde(skip_serializing_if = "Option::is_none")]
1232 pub gas_price: Option<String>,
1233
1234 #[serde(skip_serializing_if = "Option::is_none")]
1237 pub max_fee: Option<String>,
1238
1239 #[serde(skip_serializing_if = "Option::is_none")]
1242 pub priority_fee: Option<String>,
1243
1244 #[serde(skip_serializing_if = "Option::is_none")]
1246 pub ref_id: Option<String>,
1247}
1248
1249#[derive(Debug, Deserialize, Serialize)]
1251#[serde(rename_all = "camelCase")]
1252pub struct CreateContractExecutionTransactionResponse {
1253 pub id: String,
1255
1256 pub state: String,
1258}
1259
1260#[derive(Debug, Serialize, Deserialize)]
1262#[serde(rename_all = "camelCase")]
1263pub struct CancelTransactionRequest {
1264 pub entity_secret_ciphertext: String,
1266
1267 pub idempotency_key: String,
1269}
1270
1271#[derive(Debug, Deserialize, Serialize)]
1273#[serde(rename_all = "camelCase")]
1274pub struct CancelTransactionResponse {
1275 pub id: String,
1277
1278 pub state: String,
1280}
1281
1282#[derive(Debug, Serialize, Deserialize)]
1284#[serde(rename_all = "camelCase")]
1285pub struct AccelerateTransactionRequest {
1286 pub entity_secret_ciphertext: String,
1288
1289 pub idempotency_key: String,
1291}
1292
1293#[derive(Debug, Deserialize, Serialize)]
1295#[serde(rename_all = "camelCase")]
1296pub struct AccelerateTransactionResponse {
1297 pub id: String,
1299}
1300
1301#[derive(Debug, Serialize, Clone, Deserialize)]
1303#[serde(rename_all = "camelCase")]
1304pub struct RequestTestnetTokensRequest {
1305 pub blockchain: Blockchain,
1307
1308 pub address: String,
1310
1311 #[serde(skip_serializing_if = "Option::is_none")]
1313 pub native: Option<bool>,
1314
1315 #[serde(skip_serializing_if = "Option::is_none")]
1317 pub usdc: Option<bool>,
1318
1319 #[serde(skip_serializing_if = "Option::is_none")]
1321 pub eurc: Option<bool>,
1322}