# Structs

ReadPositionAll is used when we want to specify exact position from which we want to start to read events from $all stream.
ReadPositionAllEnd is used when we want to start to read events from the end of $all stream.
ReadPositionAllStart is used when we want to start to read events from the beginning of $all stream.
ReadStreamRevision is used to indicate an exact revision from which we want to start reading.
ReadStreamRevisionEnd is used when we want to start to read events from the end of a stream.
ReadStreamRevisionStart is used when we want to start to read events from beginning of a stream.
WriteStreamRevision is used to specify exact (finite) expected revision of a stream.
WriteStreamRevisionAny is used when we do not know if stream may or may not exist.
WriteStreamRevisionNoStream is used when stream must not exist.
WriteStreamRevisionStreamExists is used when stream must exist.

# Interfaces

IsReadPositionAll interface is used when we want to specify starting read position when we want to read events form $all stream.
IsReadStreamRevision interface is used when we want to read events from a stream.
IsWriteStreamRevision interface is used to specify stream's expected revision when we want to alter a state of the stream.