module Data.Base58String.Bitcoin ( B58.Base58String
, b58String
, fromBinary
, toBinary
, fromBytes
, toBytes
, fromText
, toText ) where
import Control.Applicative (pure)
import Data.Aeson
import qualified Data.Binary as B (Binary)
import qualified Data.ByteString as BS
import qualified Data.Text as T
import qualified Data.Text.Encoding as TE
import qualified Data.Base58String as B58
table :: BS.ByteString
table = BS.pack
$ [49..57]
++ [65..72]
++ [74..78]
++ [80..90]
++ [97..107]
++ [109..122]
instance FromJSON B58.Base58String where
parseJSON = withText "Base58tring" $ pure . b58String . TE.encodeUtf8
instance ToJSON B58.Base58String where
toJSON = String . toText
b58String :: BS.ByteString -> B58.Base58String
b58String = B58.b58String table
fromBinary :: B.Binary a => a -> B58.Base58String
fromBinary = B58.fromBinary table
toBinary :: B.Binary a => B58.Base58String -> a
toBinary = B58.toBinary table
fromBytes :: BS.ByteString -> B58.Base58String
fromBytes = B58.fromBytes table
toBytes :: B58.Base58String -> BS.ByteString
toBytes = B58.toBytes table
fromText :: T.Text -> B58.Base58String
fromText = B58.fromText table
toText :: B58.Base58String -> T.Text
toText = B58.toText