# Changelog for zcash-haskell

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.5.4.0]

- Function to decode Orchard actions with a spending key
- Functions for Bech32 encoding
- Function to encode a Sapling address

## [0.5.3.0]

### Added

- Function to decode Sapling outputs with a spending key

### Fixed

- Parsing of `TxIn` for FFI

## [0.5.2.0]

### Added

- Functionality to parse transparent bundles from Zebra
- Types for transparent `TxIn`, `TxOut`, `OutPoint`

## [0.5.1.0]

### Added

- Functionality to capture Sapling Spends

### Changed

- Modified the `makeZebraCall` function to handle errors explicitly
- Modified the RPC response to handle missing `result` field

## [0.5.0.1]

### Added

- Function to encode a human-readable transparent address
- Function to generate a seed phrase
- Implementations of `Read` for types
- Function to make RPC calls to `zebrad`
- Function to encode unified addresses from receivers
- Function to generate an Orchard spending key
- Constants for Zcash protocol
- Types for Spending Keys and Receivers for Sapling and Orchard
- Function to generate an Orchard receiver
- Function to generate a Sapling receiver
- Function to generate a Transparent receiver

### Changed

- Update installation to `cabal`
- Updated Rust crates:
	- `bech32` to 0.11
	- `orchard` to 0.7.0
	- `zcash_note_encryption` to 0.4.0
	- `zcash_primitives` to 0.13.0
	- `zcash_client_backend` to 0.10.0
	- `zip32` to 0.1.0
- Changed the `UnifiedAddress` to allow for optional shielded receivers

### Removed

- `Makefile`

## [0.3.0]

### Added

- Type to represent a transparent address/receiver

### Changed

- Full decoding of Unified Address

## [0.2.0]

### Added

- `matchOrchardAddress` function to ensure a UA matches a UVK and corresponding tests
- `makeZcashCall` function moved into this library
- `RpcResponse`, `RpcCall` types moved into this library
- Functions to decode Sapling transactions
- Tests for Sapling decoding
- Type for block response
- Type for raw transaction response
- JSON parsers for block response, transaction response, `ShieldedOutput` and `OrchardAction`
- Tests for JSON parsers
- Haddock annotations

### Changed

- Rearranged modules for cleaner dependencies.
- Upgrade to Haskell LTS 21.6

## [0.1.0] - 2023-06-14 

### Added

- Function `decodeHexText`
- Function `decodeBech32`
- Function `f4Jumble`
- Function `f4UnJumble`
- Function `isValidShieldedAddress`
- Function `isValidSaplingViewingKey`
- Function `matchSaplingAddress`
- Function `isValidUnifiedAddress`
- Function `decodeUfvk`
- Function `decryptOrchardAction`
- Type `RawData`
- Type `ShieldedOutput`
- Type `OrchardAction`
- Type `OrchardDecodedAction`
- Type `UnifiedFullViewingKey`