# `Raxol.Journal`
[🔗](https://github.com/DROOdotFOO/raxol/blob/v2.8.0/lib/raxol/journal.ex#L1)

`Raxol.Journal.*` names for the modules of this package.

Every function here delegates to the `Raxol.Agent.Journal.*` or
`Raxol.Agent.Contract` module of the same shape:

| Alias | Module |
| --- | --- |
| `Raxol.Journal` | `Raxol.Agent.Journal` |
| `Raxol.Journal.FileStore` | `Raxol.Agent.Journal.FileStore` |
| `Raxol.Journal.FileStore.Reader` | `Raxol.Agent.Journal.FileStore.Reader` |
| `Raxol.Journal.FileStore.Writer` | `Raxol.Agent.Journal.FileStore.Writer` |
| `Raxol.Journal.Chain` | `Raxol.Agent.Journal.Chain` |
| `Raxol.Journal.Tip` | `Raxol.Agent.Journal.Tip` |
| `Raxol.Journal.Records.Checkpoint` | `Raxol.Agent.Journal.Records.Checkpoint` |
| `Raxol.Journal.Records.Checkpoint.FileBackend` | `Raxol.Agent.Journal.Records.Checkpoint.FileBackend` |
| `Raxol.Journal.Contract` | `Raxol.Agent.Contract` |
| `Raxol.Journal.Contract.Event` | `Raxol.Agent.Contract.Event` |

An alias carries functions and types only. The structs
(`%Raxol.Agent.Journal.FileStore{}`, `%Raxol.Agent.Contract.Event{}`), the
behaviours (`Raxol.Agent.Journal`, `Raxol.Agent.Journal.Records.Checkpoint`)
and the process and `:persistent_term` names keep their `Raxol.Agent.*` names.

`Raxol.Journal.Test.*` are not aliases: they are helpers for ExUnit suites.

# `event`

```elixir
@type event() :: Raxol.Agent.Journal.event()
```

# `handle`

```elixir
@type handle() :: Raxol.Agent.Journal.handle()
```

# `journal_record`

```elixir
@type journal_record() :: Raxol.Agent.Journal.journal_record()
```

# `offset`

```elixir
@type offset() :: Raxol.Agent.Journal.offset()
```

# `session_id`

```elixir
@type session_id() :: Raxol.Agent.Journal.session_id()
```

# `verify`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
