aiken_lang/
plutus_version.rs1use 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}