Single-node ETS implementation of Attesto.CredentialOfferStore.
Credential offers live in a public ETS table owned by a GenServer that
sweeps expired rows on a fixed interval. fetch/1 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()