{-# LANGUAGE DataKinds       #-}
# LANGUAGE InstanceSigs     #
# LANGUAGE TemplateHaskell #
{-# LANGUAGE TypeFamilies    #-}
{-# LANGUAGE TypeOperators   #-}
module Futurice.App.Library.Types (
    AddBookInformation (..),
    AddBoardGameInformation (..),
    AddItemRequest (..),
    CoverData (..),
    boardGameName,
    boardGamePublisher,
    boardGamePublished,
    boardGameDesigner,
    boardGameArtist,
    boardGameInformationId,
    BoardGameInformation (..),
    BoardGameInformationResponse (..),
    BoardGames (..),
    boardGameResponseInformationId,
    boardGameResponseName,
    boardGameResponsePublisher,
    boardGameResponsePublished,
    boardGameResponseDesigner,
    boardGameResponseArtist,
    boardGameResponseGames,
    bookInformationId,
    bookTitle,
    bookISBN,
    bookAuthor,
    bookPublisher,
    bookPublished,
    bookCover,
    bookInfoLink,
    BoardGameInformationId,
    BookInformation (..),
    BookInformationId,
    BookInformationResponse (..),
    BookInformationByISBNResponse (..),
    DataSource (..),
    EditBookInformation,
    editBookInformationId,
    editBookTitle,
    editBookISBN,
    editBookAuthor,
    editBookPublisher,
    editBookPublished,
    editBookInfoLink,
    EditBoardGameInformation,
    editBoardGameInformationId,
    editBoardGameName,
    editBoardGamePublisher,
    editBoardGamePublished,
    editBoardGameDesigner,
    editBoardGameArtist,
    Books (..),
    BorrowRequest (..),
    BorrowRequestWithUser (..),
    Loan (..),
    LoanStatus (..),
    LoanResponse (..),
    loanId,
    loanInformation,
    Item (..),
    itemInfo,
    ItemId,
    ItemInfo (..),
    fromItemBook,
    fromItemBoardGame,
    Some (..),
    ItemType (..),
    SItemType (..),
    SItemTypeI (..),
    LoanId,
    Library (..),
    LibraryOrAll (..),
    allLibraries,
    libraryToText,
    usedLibraries,
    librarySelectSortOrder,
    BookSortCriteria (..),
    BoardGameSortCriteria (..),
    SortCriteria (..),
    SortDirection (..),
    ItemBuckets (..),
    partitionItems,
    HasItemType (..),
    GoogleBookResponse (..)
    ) where

import Futurice.App.Library.Types.AddItemRequest
import Futurice.App.Library.Types.BoardGameInformation
import Futurice.App.Library.Types.BoardGameInformationResponse
import Futurice.App.Library.Types.BookInformation
import Futurice.App.Library.Types.BookInformationByISBNResponse
import Futurice.App.Library.Types.BookInformationResponse
import Futurice.App.Library.Types.BorrowRequest
import Futurice.App.Library.Types.EditItemRequest
import Futurice.App.Library.Types.Item
import Futurice.App.Library.Types.ItemType
import Futurice.App.Library.Types.Library
import Futurice.App.Library.Types.Loan
import Futurice.App.Library.Types.Search
import Futurice.App.Library.Types.GoogleBookResponse
# LANGUAGE DataKinds       #
# LANGUAGE TypeFamilies    #
# LANGUAGE TypeOperators   #
# LANGUAGE InstanceSigs     #
# LANGUAGE TemplateHaskell #
module Futurice.App.Library.Types (
    AddBookInformation (..),
    AddBoardGameInformation (..),
    AddItemRequest (..),
    CoverData (..),
    boardGameName,
    boardGamePublisher,
    boardGamePublished,
    boardGameDesigner,
    boardGameArtist,
    boardGameInformationId,
    BoardGameInformation (..),
    BoardGameInformationResponse (..),
    BoardGames (..),
    boardGameResponseInformationId,
    boardGameResponseName,
    boardGameResponsePublisher,
    boardGameResponsePublished,
    boardGameResponseDesigner,
    boardGameResponseArtist,
    boardGameResponseGames,
    bookInformationId,
    bookTitle,
    bookISBN,
    bookAuthor,
    bookPublisher,
    bookPublished,
    bookCover,
    bookInfoLink,
    BoardGameInformationId,
    BookInformation (..),
    BookInformationId,
    BookInformationResponse (..),
    BookInformationByISBNResponse (..),
    DataSource (..),
    EditBookInformation,
    editBookInformationId,
    editBookTitle,
    editBookISBN,
    editBookAuthor,
    editBookPublisher,
    editBookPublished,
    editBookInfoLink,
    EditBoardGameInformation,
    editBoardGameInformationId,
    editBoardGameName,
    editBoardGamePublisher,
    editBoardGamePublished,
    editBoardGameDesigner,
    editBoardGameArtist,
    Books (..),
    BorrowRequest (..),
    BorrowRequestWithUser (..),
    Loan (..),
    LoanStatus (..),
    LoanResponse (..),
    loanId,
    loanInformation,
    Item (..),
    itemInfo,
    ItemId,
    ItemInfo (..),
    fromItemBook,
    fromItemBoardGame,
    Some (..),
    ItemType (..),
    SItemType (..),
    SItemTypeI (..),
    LoanId,
    Library (..),
    LibraryOrAll (..),
    allLibraries,
    libraryToText,
    usedLibraries,
    librarySelectSortOrder,
    BookSortCriteria (..),
    BoardGameSortCriteria (..),
    SortCriteria (..),
    SortDirection (..),
    ItemBuckets (..),
    partitionItems,
    HasItemType (..),
    GoogleBookResponse (..)
    ) where

import Futurice.App.Library.Types.AddItemRequest
import Futurice.App.Library.Types.BoardGameInformation
import Futurice.App.Library.Types.BoardGameInformationResponse
import Futurice.App.Library.Types.BookInformation
import Futurice.App.Library.Types.BookInformationByISBNResponse
import Futurice.App.Library.Types.BookInformationResponse
import Futurice.App.Library.Types.BorrowRequest
import Futurice.App.Library.Types.EditItemRequest
import Futurice.App.Library.Types.Item
import Futurice.App.Library.Types.ItemType
import Futurice.App.Library.Types.Library
import Futurice.App.Library.Types.Loan
import Futurice.App.Library.Types.Search
import Futurice.App.Library.Types.GoogleBookResponse