# Functions
NewEventSourcedRepository returns a new EventSourcedRepository implementation to store and load Aggregate Roots, specified by the aggregate.Type, using the provided event.Store implementation.
RecordThat records the Domain Event for the specified Aggregate Root.
RehydrateFromEvents rehydrates an Aggregate Root from a read-only Event Stream.
RehydrateFromState rehydrates an aggregate.Root instance using a state type, typically coming from an external state type (e.g.
# Variables
ErrRootNotFound is returned when the Aggregate Root requested through a Repository was not found.
# Structs
BaseRoot segregates and completes the aggregate.Root interface implementation when embedded to a user-defined Aggregate Root type.
EventSourcedRepository provides an aggregate.Repository interface implementation that uses an event.Store to store and load the state of the Aggregate Root.
FusedRepository is a convenience type that can be used to fuse together different implementations for the Getter and Saver Repository interface components.
Type represents the type of an Aggregate, which will expose the name of the Aggregate (used as Event Store type).
# Interfaces
Aggregate is the segregated interface, part of the Aggregate Root interface, that describes the left-folding behavior of Domain Events to update the Aggregate Root state.
Getter is an Aggregate Repository interface component, that can be used for retrieving Aggregate Roots from some storage.
ID represents an Aggregate ID type.
Internal contains some Aggregate Root methods that are used by internal packages and modules for this library.
Repository is an interface used to get Aggregate Roots from and save them to some kind of storage, depending on the implementation.
Root is the interface describing an Aggregate Root instance.
Saver is an Aggregate Repository interface component, that can be used for storing Aggregate Roots in some storage.
# Type aliases
Factory is a function that creates new zero-valued instances of an aggregate.Root implementation.