Authoritative persistence contract for episode, epoch, lease and effect state.
Summary
Callbacks
@callback advance_epoch(Autonomic.Contracts.episode_id(), map()) :: {:ok, Autonomic.Contracts.epoch()} | {:error, term()}
@callback append_event(Autonomic.Contracts.episode_id(), atom(), map()) :: {:ok, non_neg_integer()} | {:error, term()}
@callback current_epoch(Autonomic.Contracts.episode_id()) :: {:ok, Autonomic.Contracts.epoch()} | {:error, term()}
@callback fetch_effect(Autonomic.Contracts.effect_id()) :: {:ok, Autonomic.ProposedEffect.t()} | :not_found | {:error, term()}
@callback fetch_lease(Autonomic.Contracts.lease_id()) :: {:ok, Autonomic.CapabilityLease.t()} | :not_found | {:error, term()}
@callback put_effect(Autonomic.ProposedEffect.t()) :: :ok | {:error, term()}
@callback put_lease(Autonomic.CapabilityLease.t()) :: :ok | {:error, term()}