package eventDemo.libs.event import kotlinx.coroutines.flow.Flow import kotlin.reflect.KClass interface EventStream, ID : AggregateId> { fun publish(event: E) fun publish(vararg events: E) fun readLast(aggregateId: ID): E? fun readLastOf( aggregateId: ID, eventType: KClass, ): E? fun readAll(aggregateId: ID): Flow }