# Finitomata v0.35.0 - API Reference

## Modules

- FSM
  - [Finitomata](Finitomata.md): 
  - [Finitomata.Flow](Finitomata.Flow.md): The basic “brick” to build forks in top-level `Finitomata` instances.
  - [Infinitomata](Infinitomata.md): The sibling of `Finitomata`, but runs transparently in the cluster.

- Test
  - [Finitomata.ExUnit](Finitomata.ExUnit.md): Helpers and assertions to make `Finitomata` implementation easily testable.

- Goods
  - [Finitomata.Accessible](Finitomata.Accessible.md): The convenience module, exposing `start_link/1` to embed `Finitomata.Supervisor`
implementation into a supervision tree in an agnostic way.
  - [Finitomata.Cache](Finitomata.Cache.md): The self-curing cache based on `Finitomata` implementation.
  - [Finitomata.Pool](Finitomata.Pool.md): The instance of _FSM_ backed up by `Finitomata`.
  - [Finitomata.Throttler](Finitomata.Throttler.md): The internal definition of the call to throttle.

- Internals
  - [Finitomata.ClusterInfo](Finitomata.ClusterInfo.md): The behaviour to be implemented for locating the node across the cluster.
  - [Finitomata.Listener](Finitomata.Listener.md): The behaviour to be implemented and passed to `use Finitomata` to receive
  all the state transitions notifications.

  - [Finitomata.Parser](Finitomata.Parser.md): The behaviour, defining the parser to produce _FSM_ out of textual representation.

  - [Finitomata.Pool.Actor](Finitomata.Pool.Actor.md): The behaviour specifying the actor in the pool.

  - [Finitomata.State](Finitomata.State.md): Carries the state of the FSM.

  - [Finitomata.Supervisor](Finitomata.Supervisor.md): THe behaviour for actual _FSM_ implementations across _Finitomata_ framework.
  - [Finitomata.Transition](Finitomata.Transition.md): The internal representation of `Transition`.
  - [Finitomata.Transition.Path](Finitomata.Transition.Path.md): The path from one state to another one

- Persistence
  - [Finitomata.Persistency](Finitomata.Persistency.md): The behaviour to be implemented by a persistent storage to be used
  with `Finitomata` (pass the implementation as `persistency: Impl.Module.Name`
  to `use Finitomata`.)
  - [Finitomata.Persistency.Persistable](Finitomata.Persistency.Persistable.md): The protocol to be implemented for custom data to be used in pair with
  `Finitomata.Persistency.Protocol` persistency adapter.
  - [Finitomata.Persistency.Protocol](Finitomata.Persistency.Protocol.md): Default implementation of persistency adapter that does nothing but routes
  to the implementation of `Finitomata.Persistency.Persistable` for the data.

- Exceptions
  - [Finitomata.TestSyntaxError](Finitomata.TestSyntaxError.md)
  - [Finitomata.TestTransitionError](Finitomata.TestTransitionError.md)

## Mix Tasks

- [mix finitomata.generate](Mix.Tasks.Finitomata.Generate.md): Mix task to generate the `Finitomata` instance scaffold.
- [mix finitomata.generate.test](Mix.Tasks.Finitomata.Generate.Test.md): Mix task to generate the `Finitomata.ExUnit` test scaffold.

