module Cooked.Conversion.ToStakingCredential where

import Cooked.Wallet
import PlutusLedgerApi.V1.Address qualified as Api
import PlutusLedgerApi.V3 qualified as Api

class ToMaybeStakingCredential a where
  toMaybeStakingCredential :: a -> Maybe Api.StakingCredential

instance ToMaybeStakingCredential Api.StakingCredential where
  toMaybeStakingCredential :: StakingCredential -> Maybe StakingCredential
toMaybeStakingCredential = StakingCredential -> Maybe StakingCredential
forall a. a -> Maybe a
Just

instance ToMaybeStakingCredential (Maybe Api.StakingCredential) where
  toMaybeStakingCredential :: Maybe StakingCredential -> Maybe StakingCredential
toMaybeStakingCredential = Maybe StakingCredential -> Maybe StakingCredential
forall a. a -> a
id

instance ToMaybeStakingCredential Api.Address where
  toMaybeStakingCredential :: Address -> Maybe StakingCredential
toMaybeStakingCredential = Address -> Maybe StakingCredential
Api.stakingCredential

instance ToMaybeStakingCredential Wallet where
  toMaybeStakingCredential :: Wallet -> Maybe StakingCredential
toMaybeStakingCredential = Wallet -> Maybe StakingCredential
walletStakingCredential