import type { ConversationEvent } from "#client/conversation-reducer.js"; import type { EveAgentReducerEvent } from "#client/reducer.js"; interface ProjectionReducer { initial(): TData; reduce(data: TData, event: TEvent): TData; } /** * The part of a projection that root-stream bookkeeping writes. Its entries can include the * canonical conversation's agent-session events, so predicates see the wider event type. */ export interface EveAgentEventLog { append(event: EveAgentReducerEvent): void; remove(predicate: (event: ConversationEvent) => boolean): void; replace(predicate: (event: ConversationEvent) => boolean, replacement: EveAgentReducerEvent): void; reset(): void; } /** Owns chronological reducer replay when optimistic events are replaced by server events. */ export declare class EveAgentProjection { #private; constructor(reducer: ProjectionReducer, events: readonly TEvent[]); get data(): TData; get reducer(): ProjectionReducer; reset(): void; append(event: TEvent): void; remove(predicate: (event: TEvent) => boolean): void; replace(predicate: (event: TEvent) => boolean, replacement: TEvent): void; } export {};