fireblocks_sdk/models/
contract_template_dto.rs1use {
10 crate::models,
11 serde::{Deserialize, Serialize},
12};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct ContractTemplateDto {
16 #[serde(rename = "id")]
18 pub id: String,
19 #[serde(rename = "name")]
21 pub name: String,
22 #[serde(rename = "description")]
24 pub description: String,
25 #[serde(rename = "longDescription", skip_serializing_if = "Option::is_none")]
28 pub long_description: Option<String>,
29 #[serde(rename = "abi")]
30 pub abi: Vec<Vec<models::AbiFunction>>,
31 #[serde(rename = "attributes", skip_serializing_if = "Option::is_none")]
34 pub attributes: Option<models::ContractAttributes>,
35 #[serde(rename = "docs", skip_serializing_if = "Option::is_none")]
38 pub docs: Option<models::ContractDoc>,
39 #[serde(rename = "owner", skip_serializing_if = "Option::is_none")]
42 pub owner: Option<String>,
43 #[serde(rename = "vendor", skip_serializing_if = "Option::is_none")]
46 pub vendor: Option<models::VendorDto>,
47 #[serde(rename = "isPublic")]
50 pub is_public: bool,
51 #[serde(rename = "canDeploy", skip_serializing_if = "Option::is_none")]
53 pub can_deploy: Option<bool>,
54 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
56 pub r#type: Option<Type>,
57 #[serde(
58 rename = "implementationContractId",
59 skip_serializing_if = "Option::is_none"
60 )]
61 pub implementation_contract_id: Option<String>,
62 #[serde(rename = "initializationPhase")]
65 pub initialization_phase: InitializationPhase,
66}
67
68impl ContractTemplateDto {
69 pub fn new(
70 id: String,
71 name: String,
72 description: String,
73 abi: Vec<Vec<models::AbiFunction>>,
74 is_public: bool,
75 initialization_phase: InitializationPhase,
76 ) -> ContractTemplateDto {
77 ContractTemplateDto {
78 id,
79 name,
80 description,
81 long_description: None,
82 abi,
83 attributes: None,
84 docs: None,
85 owner: None,
86 vendor: None,
87 is_public,
88 can_deploy: None,
89 r#type: None,
90 implementation_contract_id: None,
91 initialization_phase,
92 }
93 }
94}
95#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
97pub enum Type {
98 #[serde(rename = "FUNGIBLE_TOKEN")]
99 FungibleToken,
100 #[serde(rename = "NON_FUNGIBLE_TOKEN")]
101 NonFungibleToken,
102 #[serde(rename = "TOKEN_UTILITY")]
103 TokenUtility,
104}
105
106impl Default for Type {
107 fn default() -> Type {
108 Self::FungibleToken
109 }
110}
111#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
114pub enum InitializationPhase {
115 #[serde(rename = "ON_DEPLOYMENT")]
116 OnDeployment,
117 #[serde(rename = "POST_DEPLOYMENT")]
118 PostDeployment,
119}
120
121impl Default for InitializationPhase {
122 fn default() -> InitializationPhase {
123 Self::OnDeployment
124 }
125}