import type { Stop } from './types.js'; export type EventCatalog = Record void>; type EventPayload = Handler extends (draft: any, payload: infer Payload) => void ? Payload : never; export interface RecordedEvent { readonly sequence: number; readonly type: string; readonly payload: unknown; readonly eventId: string; readonly occurredAt: number; readonly actor?: string; readonly schemaVersion: number; readonly previousHash: string; readonly hash: string; } export interface EventDomain> { read(): Readonly; emit(name: Name, payload: EventPayload, meta?: { actor?: string; eventId?: string; }): Promise; replay(events: readonly RecordedEvent[]): void; log(): readonly RecordedEvent[]; watch(listener: (event: RecordedEvent, state: Readonly) => void): Stop; compact(): { state: State; sequence: number; hash: string; }; } export declare function forgeEventDomain>(seed: State | (() => State), events: Events, options?: { readonly schemaVersion?: number; readonly validate?: (state: unknown) => state is State; readonly migrateEvent?: (event: RecordedEvent, targetVersion: number) => RecordedEvent; readonly clock?: () => number; readonly identify?: () => string; }): EventDomain; export {}; //# sourceMappingURL=events.d.ts.map