# bookk v1.0.0 - API Reference

## Modules

- [Bookk.Account](Bookk.Account.md): An Account is pretty much like a bucked. It has a single purpose:
holding a measurable amount of something, in this case it's
currency.
- [Bookk.AccountClass](Bookk.AccountClass.md): An account class has properties that are inherited by accounts and
serves as a way of grouping account's balances.
- [Bookk.AccountHead](Bookk.AccountHead.md): An Account head is a struct contained all the values necessary to
either fetch or create a `Bookk.Account` from/into a `Bookk.Ledger`.
- [Bookk.ChartOfAccounts](Bookk.ChartOfAccounts.md): A Chart of Accounts (abbrv.: CoA) is a mapping of all the accounts
and all the ledgers that can exist in your system. But instead of
hard-coding them, you define patterns for accounts and ledgers
supported by your application using functions and pattern matching.
- [Bookk.InterledgerEntry](Bookk.InterledgerEntry.md): An interledger entry is a collection of journal entries affecting
multiple ledgers that must be transacted under the same accounting
transaction. It's somewhat analogous to an `Ecto.Multi` holding
multiple operations or a git commit that affect multiple files.
- [Bookk.JournalEntry](Bookk.JournalEntry.md): A Journal Entry is a set of operations that must be transacted under
the same accounting transaction. Those operations describe a change
in balance for an account.
- [Bookk.Ledger](Bookk.Ledger.md): A ledger is a book that holds accounts. Traditionally, ledgers would
also hold the journal entries that changed the accounts but, in this
library, persisting those journal entries is considered off scope.
You may persist state the way the best fits your needs.
- [Bookk.NaiveState](Bookk.NaiveState.md): A state struct that holds multiple ledgers. It's considered "naive"
because it doesn't hold any information regarding the events that
led to the current state.
- [Bookk.Notation](Bookk.Notation.md): DSL notation for describing an interledger entries
(`Bookk.InterledgerEntry`).
- [Bookk.Operation](Bookk.Operation.md): An operation describe a change in balance on a single account
(`Bookk.Account`). An operation is analogous to a git diff on
a file, they represent a diff on an account's balance.
- [Bookk.Utils](Bookk.Utils.md): Utility functions.

- Exceptions
  - [Bookk.UnbalancedError](Bookk.UnbalancedError.md): An error representing that something (a journal entry, a ledger, a
state, etc) isn't balanced.

