JFOEOFGA4CQR2LW43IVQGDZSPVJAD4KDN2DZMZXGM2QDIUD7AVCAC
MJ6R42RCK2ASXAJ6QXDPMAW56RBOJ4F4HI2LFIV3KXFIKWYMQK3QC
SEWTRB6S5PO5MQBLCPVBD7XT2BDYNZUE2RO6Z2XENZRIOCN6OZJAC
3GBSDS5PDSTTJTJOLEKZRRTAONS3T3JFZ3FQGFGS3AOXDBZ6SPLAC
DFOBMSAODB3NKW37B272ZXA2ML5HMIH3N3C4GT2DPEQS7ZFK4SNAC
HMDM3B557TO5RYP2IGFFC2C2VN6HYZTDQ47CJY2O37BW55DSMFZAC
Q5X5RYQLP5K7REYD6VLHOKC4W36ZELJYA45V6YFKTD5S6MPN3NDQC
73NDXDEZRMK672GHSTC3CI6YHXFZ2GGJI5IKQGHKFDZKTNSQXLLQC
IZEVQF627FA7VV25KJAWYWGGC35LZUUBBQRPN5ZAINTQLPEDRTEAC
NLZ3JXLOOIL37O3RRQWXHNPNSNEOOLPD6MCB754BEBECQB3KGR2AC
64C6AWH66FDKU6UE6Z6JPX2J2GBM2JOPTH2GL6LHKAIUBGNGDZ5AC
NAS4BFL43SIUAAC663R6VFBHQ2DKI45K6Y6ZKVQI7S5547HBAN7QC
BWN72T44GRRZ6K2OPN56FTLNEB7J7AGC7T2U5HSMLEKUPGJP2NUAC
W35DDBFYF6Z4ZPCFEO5RPAONZLYCSNTXUSTS6FIUUVZHCI6Q7GHAC
QMRKFEPGFBCEWAIXPEIG5ILKAJ2JH5L3TOITHR4HNJXK5FN3KXBQC
V2VDN77HCSRYYWXDJJ2XOVHV4P6PVWNJZLXZ7JUYPQEZQIH5BZ3QC
HALRDT2F22DAQ54M334YSKD2XJCAXDXEZPDKGMOWKH7XELBAS6MAC
{ _project :: p
, _creator :: u
, _name :: Text
, _description :: Text
, _recurrence :: Recurrence
, _amount :: c
, _gracePeriod :: Days
{ _project :: p
, _creator :: u
, _name :: Text
, _description :: Text
, _recurrence :: Recurrence
, _amount :: c
, _gracePeriod :: Days
prec "weekly" = B.Weekly <$> field
prec "onetime" = nullField *> pure B.OneTime
prec s = fail $ "Unrecognized recurrence type: " ++ show s
prec "weekly" = B.Weekly <$> field
prec "onetime" = nullField *> pure B.OneTime
prec s = fail $ "Unrecognized recurrence type: " ++ show s
import Control.Monad.Except (MonadError, throwError)
import qualified Crypto.PubKey.RSA.Types as RSA (Error(..), PrivateKey)
import Crypto.Random.Types (MonadRandom)
import Control.Monad.Except (MonadError, throwError)
import qualified Crypto.PubKey.RSA.Types as RSA (Error (..), PrivateKey)
import Crypto.Random.Types (MonadRandom)
import Data.AffineSpace ((.+^))
import Data.Map.Strict (assocs)
import Data.Thyme.Time as T
import Data.Thyme.Clock as C
import Data.AffineSpace ((.+^))
import Data.Map.Strict (assocs)
import Data.Thyme.Clock as C
import Data.Thyme.Time as T
import qualified Network.Bippy as B
import qualified Network.Bippy.Proto as P
import qualified Network.Bippy.Types as BT
import Network.Haskoin.Script (ScriptOutput(..))
import qualified Network.Bippy as B
import qualified Network.Bippy.Proto as P
import qualified Network.Bippy.Types as BT
import Network.Haskoin.Script (ScriptOutput (..))
{ memoGen :: Subscription' Billable -> m (Maybe Text) -- ^ generator user memo
, uriGen :: Subscription' Billable -> m (Maybe URI) -- ^ generator for payment response URL
{ memoGen :: Subscription' Billable -> m (Maybe Text) -- ^ generator user memo
, uriGen :: Subscription' Billable -> m (Maybe URI) -- ^ generator for payment response URL