// Generated by dts-bundle v0.7.3 /** * Takes events from an event store an produces derived data from it. */ export interface Aggregator { /** * The result of the aggregate. */ result: TResult; /** * Called for every event that is part of this aggregate. * * @param event The event to process. */ process(event: Event): Promise; /** * Called before the events are processed. */ before?(): Promise; /** * Called after the events have been processed. */ after?(): Promise; } export interface BaseEvent { id: string; type: string; timestamp: string; payload: Payload; } export type Event = EventImpl; type EventImpl = TKey extends keyof TEvents ? EventType : never; type EventType = { id: string; type: TKey; timestamp: string; payload: TPayload; }; export {}; export class EventStore = Events> { readonly storageAdapter: StorageAdapter; constructor(options?: EventStoreOptions); emit( type: TEventType, payload: TEvents[TEventType] ): Promise>; aggregate>(aggregator: TAggregator): Promise; aggregate Aggregator>( aggregator: TAggregator ): Promise["result"]>; forEach(callback: ForEachCallback): Promise; } export interface EventStoreOptions { /** * The storage adapter to use for the event store. * If none is given, it defaults to the MemoryStorageAdapter. */ storageAdapter?: StorageAdapter; } global { /** * Can be used to declare global events using interface declaration merging. */ namespace Faustt.EventStore { interface Events {} } } export type Events = Faustt.EventStore.Events; export interface DexieStorageAdapterOptions { dexie: typeof import("dexie").default; } export class DexieStorageAdapter extends StorageAdapter { constructor(options?: DexieStorageAdapterOptions); store(event: BaseEvent): Promise; forEach(callback: ForEachCallback): Promise; } export class MemoryStorageAdapter extends StorageAdapter { store(event: BaseEvent): Promise; forEach(callback: ForEachCallback): Promise; } export type ForEachCallback = (event: Event) => void | Promise; export abstract class StorageAdapter { abstract store(event: BaseEvent): Promise; abstract forEach(callback: ForEachCallback): Promise; }