module HaskellZcash.Orchard where import C.Zcash ( rustWrapperIsUA , rustWrapperOrchardNoteDecode , rustWrapperUfvkDecode ) import qualified Data.ByteString as BS import Foreign.Rust.Marshall.Variable import HaskellZcash.Types -- | Check if given bytestring is a valid encoded unified address isValidUnifiedAddress :: BS.ByteString -> Bool isValidUnifiedAddress = rustWrapperIsUA -- | Attempt to decode the given bytestring into a Unified Full Viewing Key decodeUfvk :: BS.ByteString -> Maybe UnifiedFullViewingKey decodeUfvk str = case net decodedKey of 0 -> Nothing _ -> Just decodedKey where decodedKey = (withPureBorshVarBuffer . rustWrapperUfvkDecode) str decryptOrchardAction :: OrchardAction -> UnifiedFullViewingKey -> Maybe OrchardDecodedAction decryptOrchardAction encAction key = case a_value decodedAction of 0 -> Nothing _ -> Just decodedAction where decodedAction = withPureBorshVarBuffer $ rustWrapperOrchardNoteDecode (o_key key) encAction