Single-node ETS implementation of Attesto.CredentialOfferStore.
Credential offers live in a :protected ETS table owned by a GenServer
that sweeps expired rows on a fixed interval. Writes (put/1, sweeping) run
in the owner process; fetch/1 reads directly, is non-consuming, and returns
an offer only while its expiry is strictly in the future.
This is a per-node store; a multi-node deployment MUST back
Attesto.CredentialOfferStore with a shared store. Like the other ETS
stores it refuses to boot on a clustered BEAM unless
multi_node_acknowledged?: true.
Start options: :sweep_interval_ms (default 30_000),
:multi_node_acknowledged? (default false).
Summary
Functions
@spec reset() :: :ok
Clear every entry. Test-facing.
@spec start_link(keyword()) :: GenServer.on_start()