Skip to main content

amaru_kernel/cardano/
stake_credential_kind.rs

1// Copyright 2026 PRAGMA
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15use crate::{StakeCredential, Voter};
16
17#[derive(Debug)]
18pub enum StakeCredentialKind {
19    VerificationKey,
20    Script,
21}
22
23impl std::fmt::Display for StakeCredentialKind {
24    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
25        f.write_str(match self {
26            Self::VerificationKey => "verification_key",
27            Self::Script => "script",
28        })
29    }
30}
31
32impl From<&StakeCredential> for StakeCredentialKind {
33    fn from(credential: &StakeCredential) -> Self {
34        match credential {
35            StakeCredential::AddrKeyhash(..) => Self::VerificationKey,
36            StakeCredential::ScriptHash(..) => Self::Script,
37        }
38    }
39}
40
41impl From<&Voter> for StakeCredentialKind {
42    fn from(voter: &Voter) -> Self {
43        match voter {
44            Voter::DRepKey(..) | Voter::ConstitutionalCommitteeKey(..) | Voter::StakePoolKey(..) => {
45                Self::VerificationKey
46            }
47            Voter::DRepScript(..) | Voter::ConstitutionalCommitteeScript(..) => Self::Script,
48        }
49    }
50}