fireblocks_sdk/models/
policy_rule_v2.rs

1// Fireblocks API
2//
3// Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain.  - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
4//
5// The version of the OpenAPI document: 1.8.0
6// Contact: developers@fireblocks.com
7// Generated by: https://openapi-generator.tech
8
9use {
10    crate::models,
11    serde::{Deserialize, Serialize},
12};
13
14/// PolicyRuleV2 : V2 Policy rule which is enforced on transactions
15#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct PolicyRuleV2 {
17    /// Name of the policy rule
18    #[serde(rename = "name")]
19    pub name: String,
20    /// Unique identifier for the policy rule
21    #[serde(rename = "id")]
22    pub id: String,
23    /// Policy engine version
24    #[serde(rename = "policyEngineVersion")]
25    pub policy_engine_version: PolicyEngineVersion,
26    #[serde(rename = "type")]
27    pub r#type: models::PolicyTypeV2,
28    #[serde(rename = "subType", skip_serializing_if = "Option::is_none")]
29    pub sub_type: Option<models::PolicyTypeV2>,
30    #[serde(rename = "initiator")]
31    pub initiator: models::InitiatorConfigPatternV2,
32    #[serde(rename = "asset")]
33    pub asset: models::AssetConfigV2,
34    #[serde(rename = "source")]
35    pub source: models::AccountConfigV2,
36    #[serde(rename = "destination", skip_serializing_if = "Option::is_none")]
37    pub destination: Option<models::DestinationConfigV2>,
38    #[serde(rename = "account", skip_serializing_if = "Option::is_none")]
39    pub account: Option<models::AccountConfigV2>,
40    #[serde(rename = "verdict")]
41    pub verdict: models::VerdictConfigV2,
42    #[serde(rename = "amountOverTime", skip_serializing_if = "Option::is_none")]
43    pub amount_over_time: Option<models::AmountOverTimeConfigV2>,
44    #[serde(rename = "amount", skip_serializing_if = "Option::is_none")]
45    pub amount: Option<models::AmountRangeV2>,
46    /// External descriptor for the rule
47    #[serde(rename = "externalDescriptor", skip_serializing_if = "Option::is_none")]
48    pub external_descriptor: Option<String>,
49    #[serde(rename = "method", skip_serializing_if = "Option::is_none")]
50    pub method: Option<models::ContractMethodPatternV2>,
51    /// Whether this is a global policy
52    #[serde(rename = "isGlobalPolicy", skip_serializing_if = "Option::is_none")]
53    pub is_global_policy: Option<bool>,
54    #[serde(rename = "programCall", skip_serializing_if = "Option::is_none")]
55    pub program_call: Option<models::ProgramCallConfigV2>,
56    #[serde(rename = "screeningMetadata", skip_serializing_if = "Option::is_none")]
57    pub screening_metadata: Option<models::ScreeningMetadataConfigV2>,
58    #[serde(rename = "quoteAsset", skip_serializing_if = "Option::is_none")]
59    pub quote_asset: Option<models::AssetConfigV2>,
60    #[serde(rename = "baseAsset", skip_serializing_if = "Option::is_none")]
61    pub base_asset: Option<models::AssetConfigV2>,
62    #[serde(rename = "quoteAmount", skip_serializing_if = "Option::is_none")]
63    pub quote_amount: Option<models::AmountRangeV2>,
64    #[serde(rename = "baseAmount", skip_serializing_if = "Option::is_none")]
65    pub base_amount: Option<models::AmountRangeV2>,
66    #[serde(rename = "derivationPath", skip_serializing_if = "Option::is_none")]
67    pub derivation_path: Option<models::DerivationPathConfigV2>,
68    /// Index for the policy rule
69    #[serde(rename = "index", skip_serializing_if = "Option::is_none")]
70    pub index: Option<f64>,
71}
72
73impl PolicyRuleV2 {
74    /// V2 Policy rule which is enforced on transactions
75    pub fn new(
76        name: String,
77        id: String,
78        policy_engine_version: PolicyEngineVersion,
79        r#type: models::PolicyTypeV2,
80        initiator: models::InitiatorConfigPatternV2,
81        asset: models::AssetConfigV2,
82        source: models::AccountConfigV2,
83        verdict: models::VerdictConfigV2,
84    ) -> PolicyRuleV2 {
85        PolicyRuleV2 {
86            name,
87            id,
88            policy_engine_version,
89            r#type,
90            sub_type: None,
91            initiator,
92            asset,
93            source,
94            destination: None,
95            account: None,
96            verdict,
97            amount_over_time: None,
98            amount: None,
99            external_descriptor: None,
100            method: None,
101            is_global_policy: None,
102            program_call: None,
103            screening_metadata: None,
104            quote_asset: None,
105            base_asset: None,
106            quote_amount: None,
107            base_amount: None,
108            derivation_path: None,
109            index: None,
110        }
111    }
112}
113/// Policy engine version
114#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
115pub enum PolicyEngineVersion {
116    #[serde(rename = "v2")]
117    V2,
118}
119
120impl Default for PolicyEngineVersion {
121    fn default() -> PolicyEngineVersion {
122        Self::V2
123    }
124}