import type { WorkItem } from "../work-items/store.js"; import type { ChatBlockEnvelope, CompanyChangedEvent } from "../shared/types.js"; import type { GatewayEmit } from "../shared/gateway-events.js"; export interface ActivityOperation { id: string; toolName: string; } export interface ChatActivityContext { sessionExists: (sessionId: string) => boolean; hasBlock?: (sessionId: string, blockId: string) => boolean; nextActivityOrder?: (sessionId: string, blockId: string) => number; applyBlock: (sessionId: string, envelope: ChatBlockEnvelope, fallback: string) => unknown; emit: GatewayEmit; log?: (message: string) => void; } export declare function todoActivityBlock(item: WorkItem, action: string): ChatBlockEnvelope; /** One persistence/event boundary for all server-authored company mutations. * The domain record is already durable when this runs. A verified acting * Session gets one stable transcript block; every real mutation gets exactly * one company event after that persistence. */ export declare function persistAndEmitActivityBlock(options: { context: ChatActivityContext; sessionId?: string; operation?: ActivityOperation; envelope?: ChatBlockEnvelope; companyEvent?: CompanyChangedEvent; idempotentReplay?: boolean; }): string | undefined; //# sourceMappingURL=chat-activity.d.ts.map