An open API service indexing awesome lists of open source software.

https://github.com/mlabs-haskell/purescript-cardano-types

Domain types for Cardano
https://github.com/mlabs-haskell/purescript-cardano-types

Last synced: 6 months ago
JSON representation

Domain types for Cardano

Awesome Lists containing this project

README

          

# purescript-cardano-types [![cardano-purescript](https://img.shields.io/badge/cardano--purescript?logo=cardano&logoColor=white&label=cardano-purescript&labelColor=blue&color=blue)](https://github.com/klntsky/cardano-purescript)

This library contains wrappers over [autogenerated bindings for cardano-data-lite (CDL)](https://github.com/mlabs-haskell/purescript-cardano-data-lite) and some types adapted from `cardano-api` and `cardano-wallet`. It is primarily used in [`cardano-transaction-lib`](https://github.com/Plutonomicon/cardano-transaction-lib/).

This library presents `Transaction` and all its structural components as PureScript algebraic data types.

- Trivial types are implemented as `newtype`s over CDL
- Variant types are implemented as ADTs
- Records-like types are implemented as newtypes over PureScript records

Here's what is included:

- `AsCbor` instances for types that are representable as binary
- `Show`, `Eq`, `Ord`, `Generic` instances where they make sense
- `ToMetadata`/`FromMetadata` and `ToData`/`FromData` typeclasses and some instances
- Some pretty-printing functions that render a [`TagSet` from `monad-logger`](https://pursuit.purescript.org/packages/purescript-monad-logger/1.3.1/docs/Data.Log.Tag#t:TagSet).
- `fromCdl` / `toCdl` functions that lift values between CDL and PureScript domains (only for types ported from CDL)

## Types not from CDL:

- `Asset`
- `AssetClass`
- `PaymentPubKeyHash`
- `UtxoMap`
- `Chain`
- `ChainTip`
- `BlockHeaderHash`
- `DelegationsAndRewards`
- `EpochLength`
- `EraSummaries`
- `EraSummary`
- `EraSummaryParameters`
- `EraSummaryTime`
- `RelativeTime`
- `SafeZone`
- `SlotLength`
- `ProtocolParameters`
- `Rational`
- `StakeValidatorHash`
- `SystemStart`

## Limitations

- `Semigroup` instances for `Value`, `ExUnits` and `Mint` are unlawful (they unsafely throw on numeric overflows)
- No `TransactionBuilder` - for a framework to build transactions, see [`cardano-transaction-lib`](https://github.com/Plutonomicon/cardano-transaction-lib/)
- No `Block`, `BlockHeader` - these are not needed for an in-browser dApp.
- Recursion max-depth issues (JavaScript...)