aiken_lang/
plutus_version.rs

1use pallas_primitives::conway::Language;
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Default, Deserialize, Serialize, Clone, Copy, PartialEq)]
5#[serde(rename_all = "camelCase")]
6pub enum PlutusVersion {
7    V1,
8    V2,
9    #[default]
10    V3,
11}
12
13impl From<PlutusVersion> for Language {
14    fn from(value: PlutusVersion) -> Self {
15        match value {
16            PlutusVersion::V1 => Language::PlutusV1,
17            PlutusVersion::V2 => Language::PlutusV2,
18            PlutusVersion::V3 => Language::PlutusV3,
19        }
20    }
21}
22
23impl From<&PlutusVersion> for Language {
24    fn from(value: &PlutusVersion) -> Self {
25        match value {
26            PlutusVersion::V1 => Language::PlutusV1,
27            PlutusVersion::V2 => Language::PlutusV2,
28            PlutusVersion::V3 => Language::PlutusV3,
29        }
30    }
31}
32
33impl From<Language> for PlutusVersion {
34    fn from(value: Language) -> Self {
35        match value {
36            Language::PlutusV1 => PlutusVersion::V2,
37            Language::PlutusV2 => PlutusVersion::V2,
38            Language::PlutusV3 => PlutusVersion::V3,
39        }
40    }
41}
42
43impl PlutusVersion {
44    pub fn cardano_cli_type(&self) -> String {
45        match self {
46            PlutusVersion::V1 => "PlutusScriptV1".to_string(),
47            PlutusVersion::V2 => "PlutusScriptV2".to_string(),
48            PlutusVersion::V3 => "PlutusScriptV3".to_string(),
49        }
50    }
51}