@@ -18,26 +18,19 @@ import Codec.Binary.Bech32 (Word5)
18
18
import qualified Codec.Binary.Bech32.Internal as Bech32
19
19
import Control.Applicative
20
20
import Data.Attoparsec.Text
21
- import Data.Bifunctor (first )
22
21
import Data.Bits (shiftL , (.|.) )
23
- import Data.ByteString (ByteString )
24
22
import qualified Data.ByteString as BS
25
23
import qualified Data.ByteString.Base16 as B16
26
24
import qualified Data.ByteString.Builder as BS
27
25
import qualified Data.ByteString.Lazy.Char8 as BL
28
- import Data.Data (Data )
29
- import Data.Foldable (foldl' )
30
- import Data.Maybe (fromMaybe )
31
- import Data.Ratio ((%) )
32
- import Data.String (IsString (.. ))
33
- import Data.Text (Text )
34
26
import qualified Data.Text as T
35
- import Data.Text.Encoding (decodeUtf8 )
36
27
import qualified Data.Text.Encoding as T
37
- import GHC.Generics ( Generic )
38
- import Prelude
28
+ import Functora.Prelude hiding ( error )
29
+ import Prelude ( Show ( .. ), error , splitAt , take )
39
30
40
- newtype Hex = Hex { getHex :: ByteString }
31
+ newtype Hex = Hex
32
+ { unHex :: ByteString
33
+ }
41
34
deriving newtype (Eq , Ord )
42
35
deriving stock (Data , Generic )
43
36
@@ -100,13 +93,22 @@ newtype Bolt11Amount = Bolt11Amount {_getBolt11Amount :: (Integer, Multiplier)}
100
93
101
94
instance Show Bolt11Amount where
102
95
show (Bolt11Amount (amt, mul)) =
103
- show msat <> " msats"
96
+ if (round sat) % 1 /= sat
97
+ then show msat <> " Millisatoshi"
98
+ else
99
+ if sat < 1_000_000
100
+ then show sat <> " Satoshi"
101
+ else show btc <> " BTC"
104
102
where
105
- msat :: Integer
106
- msat = round $ (amt % 1 ) * multiplierRatio mul * 1000_0000_0000
103
+ btc :: Rational
104
+ btc = (amt % 1 ) * multiplierRatio mul
105
+ sat :: Rational
106
+ sat = btc * 1_0000_0000
107
+ msat :: Rational
108
+ msat = sat * 1000
107
109
108
110
data Bolt11HRP = Bolt11HRP
109
- { bolt11Currency :: Network ,
111
+ { bolt11Network :: Network ,
110
112
bolt11Amount :: Maybe Bolt11Amount
111
113
}
112
114
deriving stock (Eq , Ord , Show , Data , Generic )
0 commit comments