use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PolicyRuleV2 {
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "policyEngineVersion")]
pub policy_engine_version: PolicyEngineVersion,
#[serde(rename = "type")]
pub r#type: models::PolicyTypeV2,
#[serde(rename = "subType", skip_serializing_if = "Option::is_none")]
pub sub_type: Option<models::PolicyTypeV2>,
#[serde(rename = "initiator")]
pub initiator: models::InitiatorConfigPatternV2,
#[serde(rename = "asset")]
pub asset: models::AssetConfigV2,
#[serde(rename = "source")]
pub source: models::AccountConfigV2,
#[serde(rename = "destination", skip_serializing_if = "Option::is_none")]
pub destination: Option<models::DestinationConfigV2>,
#[serde(rename = "account", skip_serializing_if = "Option::is_none")]
pub account: Option<models::AccountConfigV2>,
#[serde(rename = "verdict")]
pub verdict: models::VerdictConfigV2,
#[serde(rename = "amountOverTime", skip_serializing_if = "Option::is_none")]
pub amount_over_time: Option<models::AmountOverTimeConfigV2>,
#[serde(rename = "amount", skip_serializing_if = "Option::is_none")]
pub amount: Option<models::AmountRangeV2>,
#[serde(rename = "externalDescriptor", skip_serializing_if = "Option::is_none")]
pub external_descriptor: Option<String>,
#[serde(rename = "method", skip_serializing_if = "Option::is_none")]
pub method: Option<models::ContractMethodPatternV2>,
#[serde(rename = "isGlobalPolicy", skip_serializing_if = "Option::is_none")]
pub is_global_policy: Option<bool>,
#[serde(rename = "programCall", skip_serializing_if = "Option::is_none")]
pub program_call: Option<models::ProgramCallConfigV2>,
#[serde(rename = "screeningMetadata", skip_serializing_if = "Option::is_none")]
pub screening_metadata: Option<models::ScreeningMetadataConfigV2>,
#[serde(rename = "quoteAsset", skip_serializing_if = "Option::is_none")]
pub quote_asset: Option<models::AssetConfigV2>,
#[serde(rename = "baseAsset", skip_serializing_if = "Option::is_none")]
pub base_asset: Option<models::AssetConfigV2>,
#[serde(rename = "quoteAmount", skip_serializing_if = "Option::is_none")]
pub quote_amount: Option<models::AmountRangeV2>,
#[serde(rename = "baseAmount", skip_serializing_if = "Option::is_none")]
pub base_amount: Option<models::AmountRangeV2>,
#[serde(rename = "derivationPath", skip_serializing_if = "Option::is_none")]
pub derivation_path: Option<models::DerivationPathConfigV2>,
#[serde(rename = "index", skip_serializing_if = "Option::is_none")]
pub index: Option<f64>,
}
impl PolicyRuleV2 {
pub fn new(
name: String,
id: String,
policy_engine_version: PolicyEngineVersion,
r#type: models::PolicyTypeV2,
initiator: models::InitiatorConfigPatternV2,
asset: models::AssetConfigV2,
source: models::AccountConfigV2,
verdict: models::VerdictConfigV2,
) -> PolicyRuleV2 {
PolicyRuleV2 {
name,
id,
policy_engine_version,
r#type,
sub_type: None,
initiator,
asset,
source,
destination: None,
account: None,
verdict,
amount_over_time: None,
amount: None,
external_descriptor: None,
method: None,
is_global_policy: None,
program_call: None,
screening_metadata: None,
quote_asset: None,
base_asset: None,
quote_amount: None,
base_amount: None,
derivation_path: None,
index: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum PolicyEngineVersion {
#[serde(rename = "v2")]
V2,
}
impl Default for PolicyEngineVersion {
fn default() -> PolicyEngineVersion {
Self::V2
}
}