cabal-version:       2.2
name:                blockfrost-api
version:             0.13.0.0
synopsis:            API definitions for blockfrost.io
description:         Core types and Servant API description
homepage:            https://github.com/blockfrost/blockfrost-haskell
license:             Apache-2.0
license-file:        LICENSE
author:              blockfrost.io
maintainer:          srk@48.io
copyright:           2021 blockfrost.io
category:            Cardano
build-type:          Simple

extra-source-files:
    LICENSE
    README.md
extra-doc-files:
    CHANGELOG.md

flag BuildFast
     Default: True
     Description: Turn off optimizations

flag Production
     Default: False
     Manual: True
     Description: Production build

common libstuff
  default-language:    Haskell2010
  default-extensions:
    DataKinds
    DeriveAnyClass
    DeriveGeneric
    DerivingVia
    DuplicateRecordFields
    GADTs
    GeneralizedNewtypeDeriving
    FlexibleContexts
    FlexibleInstances
    InstanceSigs
    LambdaCase
    MultiParamTypeClasses
    QuasiQuotes
    RankNTypes
    ScopedTypeVariables
    TemplateHaskell
    TypeApplications
    TypeFamilies
    TypeOperators
    ViewPatterns
    OverloadedStrings
  ghc-options:         -Wall -Wunused-packages -fno-warn-orphans
  if flag(BuildFast)
    ghc-options: -O0
  if flag(Production)
    ghc-options: -Werror

library
   import:              libstuff
   hs-source-dirs:      src
   exposed-modules:     Blockfrost.API
                      , Blockfrost.API.Common
                      , Blockfrost.API.Cardano
                      , Blockfrost.API.Cardano.Accounts
                      , Blockfrost.API.Cardano.Addresses
                      , Blockfrost.API.Cardano.Assets
                      , Blockfrost.API.Cardano.Blocks
                      , Blockfrost.API.Cardano.Epochs
                      , Blockfrost.API.Cardano.Governance
                      , Blockfrost.API.Cardano.Ledger
                      , Blockfrost.API.Cardano.Mempool
                      , Blockfrost.API.Cardano.Metadata
                      , Blockfrost.API.Cardano.Network
                      , Blockfrost.API.Cardano.Pools
                      , Blockfrost.API.Cardano.Scripts
                      , Blockfrost.API.Cardano.Transactions
                      , Blockfrost.API.Cardano.Utils
                      , Blockfrost.API.IPFS
                      , Blockfrost.API.NutLink
                      , Blockfrost.Auth
                      , Blockfrost.Env
                      , Blockfrost.Lens
                      , Blockfrost.Types
                      , Blockfrost.Types.ApiError
                      , Blockfrost.Types.Common
                      , Blockfrost.Types.Cardano
                      , Blockfrost.Types.Cardano.Accounts
                      , Blockfrost.Types.Cardano.Addresses
                      , Blockfrost.Types.Cardano.Assets
                      , Blockfrost.Types.Cardano.Blocks
                      , Blockfrost.Types.Cardano.Epochs
                      , Blockfrost.Types.Cardano.Genesis
                      , Blockfrost.Types.Cardano.Governance
                      , Blockfrost.Types.Cardano.Mempool
                      , Blockfrost.Types.Cardano.Metadata
                      , Blockfrost.Types.Cardano.Network
                      , Blockfrost.Types.Cardano.Pools
                      , Blockfrost.Types.Cardano.Scripts
                      , Blockfrost.Types.Cardano.Transactions
                      , Blockfrost.Types.Cardano.Utils
                      , Blockfrost.Types.IPFS
                      , Blockfrost.Types.NutLink
                      , Blockfrost.Types.Shared
                      , Blockfrost.Types.Shared.Ada
                      , Blockfrost.Types.Shared.Address
                      , Blockfrost.Types.Shared.BlockHash
                      , Blockfrost.Types.Shared.BlockIndex
                      , Blockfrost.Types.Shared.Epoch
                      , Blockfrost.Types.Shared.CBOR
                      , Blockfrost.Types.Shared.DatumHash
                      , Blockfrost.Types.Shared.DRepId
                      , Blockfrost.Types.Shared.Opts
                      , Blockfrost.Types.Shared.POSIXMillis
                      , Blockfrost.Types.Shared.ScriptHash
                      , Blockfrost.Types.Shared.Slot
                      , Blockfrost.Types.Shared.TxHash
                      , Blockfrost.Types.Shared.Amount
                      , Blockfrost.Types.Shared.AssetId
                      , Blockfrost.Types.Shared.PolicyId
                      , Blockfrost.Types.Shared.PoolId
                      , Blockfrost.Types.Shared.Quantity
                      , Blockfrost.Types.Shared.ValidationPurpose
                      , Blockfrost.Util.LensRules
                      , Blockfrost.Util.Pagination
                      , Blockfrost.Util.Sorting
                      , Blockfrost.Util.Tag
                      , Blockfrost.Util.UserAgent
                      , Paths_blockfrost_api
   autogen-modules:     Paths_blockfrost_api
   build-depends:       base                     >= 4.7 && < 5
                      , bytestring
                      , containers
                      , data-default-class
                      , text
                      , time
                      , aeson                    >= 2.0 && < 3.0
                      , deriving-aeson
                      , lens                     >= 5.0 && < 5.4
                      , template-haskell
                      , servant                  >= 0.18 && < 0.21
                      , servant-docs
                      , servant-multipart-api
                      , safe-money               >= 0.9 && < 0.10
                      , vector

test-suite blockfrost-api-tests
  type:                exitcode-stdio-1.0
  hs-source-dirs:      test
  main-is:             Spec.hs
  other-modules:       AmountSpec
                     , APISpec
                     , Cardano.Accounts
                     , Cardano.Addresses
                     , Cardano.Assets
                     , Cardano.Blocks
                     , Cardano.Epochs
                     , Cardano.Governance
                     , Cardano.Ledger
                     , Cardano.Metadata
                     , Cardano.Network
                     , Cardano.Pools
                     , Cardano.Scripts
                     , Cardano.Transactions
                     , Cardano.Utils
                     , IPFS
                     , NutLink
  build-depends:       base >= 4.7 && < 5
                     , blockfrost-api
                     , aeson
                     , bytestring
                     , containers
                     , text
                     , data-default
                     , safe-money
                     , raw-strings-qq
                     , vector
                     , hspec
                     , tasty
                     , tasty-hspec
                     , tasty-hunit
  build-tool-depends:
    tasty-discover:tasty-discover
  default-language:    Haskell2010

source-repository head
  type:     git
  location: https://github.com/blockfrost/blockfrost-haskell