Skip to content

Commit

Permalink
Introduce smart types for pub key hashes and wallet IDs
Browse files Browse the repository at this point in the history
  • Loading branch information
jhbertra committed Jan 26, 2022
1 parent 8871ba2 commit 67bd6ce
Show file tree
Hide file tree
Showing 40 changed files with 533 additions and 310 deletions.
Expand Up @@ -18,9 +18,9 @@ import Data.Lens.Record (prop)
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Newtype (class Newtype, unwrap)
import Data.PaymentPubKeyHash (PaymentPubKeyHash)
import Data.Show.Generic (genericShow)
import Data.Tuple.Nested ((/\))
import Ledger.Address (PaymentPubKeyHash)
import Type.Proxy (Proxy(Proxy))
import Wallet.Emulator.Wallet (Wallet)

Expand Down
37 changes: 2 additions & 35 deletions marlowe-dashboard-client/generated/Ledger/Address.purs
Expand Up @@ -18,9 +18,10 @@ import Data.Lens.Record (prop)
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Newtype (class Newtype, unwrap)
import Data.PubKeyHash (PubKeyHash)
import Data.Show.Generic (genericShow)
import Data.Tuple.Nested ((/\))
import Plutus.V1.Ledger.Crypto (PubKey, PubKeyHash)
import Plutus.V1.Ledger.Crypto (PubKey)
import Type.Proxy (Proxy(Proxy))

newtype PaymentPubKey = PaymentPubKey { unPaymentPubKey :: PubKey }
Expand Down Expand Up @@ -55,40 +56,6 @@ _PaymentPubKey = _Newtype

--------------------------------------------------------------------------------

newtype PaymentPubKeyHash = PaymentPubKeyHash
{ unPaymentPubKeyHash :: PubKeyHash }

derive instance Eq PaymentPubKeyHash

derive instance Ord PaymentPubKeyHash

instance Show PaymentPubKeyHash where
show a = genericShow a

instance EncodeJson PaymentPubKeyHash where
encodeJson = defer \_ -> E.encode $ unwrap >$<
( E.record
{ unPaymentPubKeyHash: E.value :: _ PubKeyHash }
)

instance DecodeJson PaymentPubKeyHash where
decodeJson = defer \_ -> D.decode $
( PaymentPubKeyHash <$> D.record "PaymentPubKeyHash"
{ unPaymentPubKeyHash: D.value :: _ PubKeyHash }
)

derive instance Generic PaymentPubKeyHash _

derive instance Newtype PaymentPubKeyHash _

--------------------------------------------------------------------------------

_PaymentPubKeyHash :: Iso' PaymentPubKeyHash
{ unPaymentPubKeyHash :: PubKeyHash }
_PaymentPubKeyHash = _Newtype

--------------------------------------------------------------------------------

newtype StakePubKey = StakePubKey { unStakePubKey :: PubKey }

derive instance Eq StakePubKey
Expand Down
Expand Up @@ -19,9 +19,10 @@ import Data.Map (Map)
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Newtype (class Newtype, unwrap)
import Data.PaymentPubKeyHash (PaymentPubKeyHash)
import Data.Show.Generic (genericShow)
import Data.Tuple.Nested ((/\))
import Ledger.Address (PaymentPubKey, PaymentPubKeyHash)
import Ledger.Address (PaymentPubKey)
import Ledger.Typed.Tx (ConnectionError)
import Plutus.V1.Ledger.Address (Address)
import Plutus.V1.Ledger.Interval (Interval)
Expand Down
3 changes: 2 additions & 1 deletion marlowe-dashboard-client/generated/Ledger/Index.purs
Expand Up @@ -23,11 +23,12 @@ import Data.Map (Map)
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Newtype (class Newtype, unwrap)
import Data.PubKeyHash (PubKeyHash)
import Data.RawJson (RawJson)
import Data.Show.Generic (genericShow)
import Data.Tuple (Tuple)
import Data.Tuple.Nested ((/\))
import Plutus.V1.Ledger.Crypto (PubKey, PubKeyHash, Signature)
import Plutus.V1.Ledger.Crypto (PubKey, Signature)
import Plutus.V1.Ledger.Scripts
( DatumHash
, MintingPolicy
Expand Down
4 changes: 2 additions & 2 deletions marlowe-dashboard-client/generated/Marlowe/Run/Server.purs
Expand Up @@ -4,8 +4,6 @@ module Marlowe.Run.Server where
import Prelude

import Affjax.RequestHeader (RequestHeader(..))
import Cardano.Wallet.Mock.Types (WalletInfo)
import Component.Contacts.Types (WalletId)
import Data.Argonaut (Json, JsonDecodeError)
import Data.Argonaut.Decode.Aeson ((</$\>), (</*\>), (</\>))
import Data.Argonaut.Decode.Aeson as D
Expand All @@ -17,13 +15,15 @@ import Data.Foldable (fold)
import Data.HTTP.Method (Method(..))
import Data.Maybe (Maybe(..))
import Data.Tuple (Tuple)
import Data.WalletId (WalletId)
import Marlowe.Run.Wallet.V1 (GetTotalFundsResponse)
import Marlowe.Run.Wallet.V1.CentralizedTestnet.Types
( CreatePostData
, CreateResponse
, RestoreError
, RestorePostData
)
import Marlowe.Run.Wallet.V1.Types (WalletInfo)
import Servant.PureScript
( class MonadAjax
, AjaxError
Expand Down
Expand Up @@ -3,7 +3,6 @@ module Marlowe.Run.Wallet.V1.CentralizedTestnet.Types where

import Prelude

import Cardano.Wallet.Mock.Types (WalletInfo)
import Control.Lazy (defer)
import Data.Argonaut (encodeJson, jsonNull)
import Data.Argonaut.Decode (class DecodeJson)
Expand All @@ -24,11 +23,13 @@ import Data.Maybe (Maybe(..))
import Data.Newtype (class Newtype, unwrap)
import Data.Show.Generic (genericShow)
import Data.Tuple.Nested ((/\))
import Data.WalletNickname (WalletNickname)
import Marlowe.Run.Wallet.V1.Types (WalletInfo)
import Type.Proxy (Proxy(Proxy))

newtype CreatePostData = CreatePostData
{ getCreatePassphrase :: String
, getCreateWalletName :: String
, getCreateWalletName :: WalletNickname
}

derive instance Eq CreatePostData
Expand All @@ -40,15 +41,15 @@ instance EncodeJson CreatePostData where
encodeJson = defer \_ -> E.encode $ unwrap >$<
( E.record
{ getCreatePassphrase: E.value :: _ String
, getCreateWalletName: E.value :: _ String
, getCreateWalletName: E.value :: _ WalletNickname
}
)

instance DecodeJson CreatePostData where
decodeJson = defer \_ -> D.decode $
( CreatePostData <$> D.record "CreatePostData"
{ getCreatePassphrase: D.value :: _ String
, getCreateWalletName: D.value :: _ String
, getCreateWalletName: D.value :: _ WalletNickname
}
)

Expand All @@ -59,7 +60,7 @@ derive instance Newtype CreatePostData _
--------------------------------------------------------------------------------

_CreatePostData :: Iso' CreatePostData
{ getCreatePassphrase :: String, getCreateWalletName :: String }
{ getCreatePassphrase :: String, getCreateWalletName :: WalletNickname }
_CreatePostData = _Newtype

--------------------------------------------------------------------------------
Expand All @@ -69,6 +70,8 @@ newtype CreateResponse = CreateResponse
, walletInfo :: WalletInfo
}

derive instance Eq CreateResponse

instance Show CreateResponse where
show a = genericShow a

Expand Down Expand Up @@ -150,7 +153,7 @@ _FetchPubKeyHashError = prism' (const FetchPubKeyHashError) case _ of
newtype RestorePostData = RestorePostData
{ getRestoreMnemonicPhrase :: Array String
, getRestorePassphrase :: String
, getRestoreWalletName :: String
, getRestoreWalletName :: WalletNickname
}

derive instance Eq RestorePostData
Expand All @@ -163,7 +166,7 @@ instance EncodeJson RestorePostData where
( E.record
{ getRestoreMnemonicPhrase: E.value :: _ (Array String)
, getRestorePassphrase: E.value :: _ String
, getRestoreWalletName: E.value :: _ String
, getRestoreWalletName: E.value :: _ WalletNickname
}
)

Expand All @@ -172,7 +175,7 @@ instance DecodeJson RestorePostData where
( RestorePostData <$> D.record "RestorePostData"
{ getRestoreMnemonicPhrase: D.value :: _ (Array String)
, getRestorePassphrase: D.value :: _ String
, getRestoreWalletName: D.value :: _ String
, getRestoreWalletName: D.value :: _ WalletNickname
}
)

Expand All @@ -185,6 +188,6 @@ derive instance Newtype RestorePostData _
_RestorePostData :: Iso' RestorePostData
{ getRestoreMnemonicPhrase :: Array String
, getRestorePassphrase :: String
, getRestoreWalletName :: String
, getRestoreWalletName :: WalletNickname
}
_RestorePostData = _Newtype
@@ -0,0 +1,61 @@
-- File auto generated by purescript-bridge! --
module Marlowe.Run.Wallet.V1.Types where

import Prelude

import Control.Lazy (defer)
import Data.Argonaut (encodeJson, jsonNull)
import Data.Argonaut.Decode (class DecodeJson)
import Data.Argonaut.Decode.Aeson ((</$\>), (</*\>), (</\>))
import Data.Argonaut.Decode.Aeson as D
import Data.Argonaut.Encode (class EncodeJson)
import Data.Argonaut.Encode.Aeson ((>$<), (>/\<))
import Data.Argonaut.Encode.Aeson as E
import Data.Generic.Rep (class Generic)
import Data.Lens (Iso', Lens', Prism', iso, prism')
import Data.Lens.Iso.Newtype (_Newtype)
import Data.Lens.Record (prop)
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Newtype (class Newtype, unwrap)
import Data.PaymentPubKeyHash (PaymentPubKeyHash)
import Data.Show.Generic (genericShow)
import Data.Tuple.Nested ((/\))
import Data.WalletId (WalletId)
import Type.Proxy (Proxy(Proxy))

newtype WalletInfo = WalletInfo
{ walletId :: WalletId
, pubKeyHash :: PaymentPubKeyHash
}

derive instance Eq WalletInfo

instance Show WalletInfo where
show a = genericShow a

instance EncodeJson WalletInfo where
encodeJson = defer \_ -> E.encode $ unwrap >$<
( E.record
{ walletId: E.value :: _ WalletId
, pubKeyHash: E.value :: _ PaymentPubKeyHash
}
)

instance DecodeJson WalletInfo where
decodeJson = defer \_ -> D.decode $
( WalletInfo <$> D.record "WalletInfo"
{ walletId: D.value :: _ WalletId
, pubKeyHash: D.value :: _ PaymentPubKeyHash
}
)

derive instance Generic WalletInfo _

derive instance Newtype WalletInfo _

--------------------------------------------------------------------------------

_WalletInfo :: Iso' WalletInfo
{ walletId :: WalletId, pubKeyHash :: PaymentPubKeyHash }
_WalletInfo = _Newtype
Expand Up @@ -21,10 +21,10 @@ import Data.List.Types (NonEmptyList)
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Newtype (class Newtype, unwrap)
import Data.PaymentPubKeyHash (PaymentPubKeyHash)
import Data.RawJson (RawJson)
import Data.Show.Generic (genericShow)
import Data.Tuple.Nested ((/\))
import Ledger.Address (PaymentPubKeyHash)
import Ledger.Constraints.OffChain (UnbalancedTx)
import Ledger.TimeSlot (SlotConversionError)
import Ledger.Tx (ChainIndexTxOut)
Expand Down
Expand Up @@ -20,6 +20,7 @@ import Data.Map (Map)
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Newtype (class Newtype, unwrap)
import Data.PubKeyHash (PubKeyHash)
import Data.RawJson (RawJson)
import Data.Show.Generic (genericShow)
import Data.Tuple (Tuple)
Expand All @@ -28,7 +29,6 @@ import Ledger.Index (UtxoIndex)
import Playground.Types (FunctionSchema)
import Plutus.Contract.Effects (ActiveEndpoint, PABReq)
import Plutus.PAB.Events.ContractInstanceState (PartiallyDecodedResponse)
import Plutus.V1.Ledger.Crypto (PubKeyHash)
import Plutus.V1.Ledger.Slot (Slot)
import Plutus.V1.Ledger.Tx (Tx)
import Plutus.V1.Ledger.TxId (TxId)
Expand Down
Expand Up @@ -19,9 +19,9 @@ import Data.Lens.Record (prop)
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Newtype (unwrap)
import Data.PubKeyHash (PubKeyHash)
import Data.Show.Generic (genericShow)
import Data.Tuple.Nested ((/\))
import Plutus.V1.Ledger.Crypto (PubKeyHash)
import Type.Proxy (Proxy(Proxy))

data Credential
Expand Down
32 changes: 0 additions & 32 deletions marlowe-dashboard-client/generated/Plutus/V1/Ledger/Crypto.purs
Expand Up @@ -52,38 +52,6 @@ _PubKey = _Newtype

--------------------------------------------------------------------------------

newtype PubKeyHash = PubKeyHash { getPubKeyHash :: String }

derive instance Eq PubKeyHash

derive instance Ord PubKeyHash

instance Show PubKeyHash where
show a = genericShow a

instance EncodeJson PubKeyHash where
encodeJson = defer \_ -> E.encode $ unwrap >$<
( E.record
{ getPubKeyHash: E.value :: _ String }
)

instance DecodeJson PubKeyHash where
decodeJson = defer \_ -> D.decode $
( PubKeyHash <$> D.record "PubKeyHash"
{ getPubKeyHash: D.value :: _ String }
)

derive instance Generic PubKeyHash _

derive instance Newtype PubKeyHash _

--------------------------------------------------------------------------------

_PubKeyHash :: Iso' PubKeyHash { getPubKeyHash :: String }
_PubKeyHash = _Newtype

--------------------------------------------------------------------------------

newtype Signature = Signature { getSignature :: String }

instance Show Signature where
Expand Down
Expand Up @@ -19,10 +19,10 @@ import Data.Lens.Record (prop)
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Newtype (unwrap)
import Data.PubKeyHash (PubKeyHash)
import Data.Show.Generic (genericShow)
import Data.Tuple.Nested ((/\))
import Plutus.V1.Ledger.Credential (StakingCredential)
import Plutus.V1.Ledger.Crypto (PubKeyHash)
import Type.Proxy (Proxy(Proxy))

data DCert
Expand Down
Expand Up @@ -18,9 +18,9 @@ import Data.Lens.Record (prop)
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Newtype (unwrap)
import Data.PaymentPubKeyHash (PaymentPubKeyHash)
import Data.Show.Generic (genericShow)
import Data.Tuple.Nested ((/\))
import Ledger.Address (PaymentPubKeyHash)
import Ledger.Constraints.OffChain (MkTxError)
import Ledger.Index (ValidationError)
import Ledger.Tx.CardanoAPI (ToCardanoError)
Expand Down
Expand Up @@ -20,9 +20,9 @@ import Data.Map (Map)
import Data.Map as Map
import Data.Maybe (Maybe(..))
import Data.Newtype (class Newtype, unwrap)
import Data.PaymentPubKeyHash (PaymentPubKeyHash)
import Data.Show.Generic (genericShow)
import Data.Tuple.Nested ((/\))
import Ledger.Address (PaymentPubKeyHash)
import Plutus.V1.Ledger.Tx (Tx, TxIn, TxOut)
import Plutus.V1.Ledger.TxId (TxId)
import Plutus.V1.Ledger.Value (Value)
Expand Down

0 comments on commit 67bd6ce

Please sign in to comment.