import type { InstanceAiErrorEvent, InstanceAiEvent } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; import type { User } from '@n8n/db'; import { type InstanceAiTraceContext, type ManagedBackgroundTask, type PatchableThreadMemory, type RunStateRegistry, type TerminalResponseDecision, type TerminalResponseStatus, type WorkSummary } from '@n8n/instance-ai'; import type { Telemetry } from '../../telemetry'; import type { InProcessEventBus } from './event-bus/in-process-event-bus'; import type { DbSnapshotStorage } from './storage/db-snapshot-storage'; import type { SuspendedThreadPersistenceService } from './suspended-thread-persistence.service'; import type { InstanceAiTracingService, MessageTraceFinalization } from './tracing/instance-ai-tracing.service'; type InstanceAiErrorCode = NonNullable; export type InstanceAiTerminalOutcomeEventBus = Pick & { getEventsForRun(threadId: string, runId: string): InstanceAiEvent[] | Promise; getEventsForRuns(threadId: string, runIds: string[]): InstanceAiEvent[] | Promise; }; export type InstanceAiTerminalOutcomeSnapshotStorage = Pick; export type InstanceAiTerminalOutcomeTelemetry = Pick; export type InstanceAiTerminalOutcomeRunState = Pick, 'getRunIdsForMessageGroup' | 'cancelThread'>; export type InstanceAiTerminalOutcomeSuspendedThreads = Pick; export type InstanceAiTerminalOutcomeTracing = Pick; export interface InstanceAiTerminalOutcomeServiceOptions { eventBus: InstanceAiTerminalOutcomeEventBus; durableLog: boolean; dbSnapshotStorage: InstanceAiTerminalOutcomeSnapshotStorage; agentMemory: PatchableThreadMemory; telemetry: InstanceAiTerminalOutcomeTelemetry; logger: Logger; runState: InstanceAiTerminalOutcomeRunState; suspendedThreads: InstanceAiTerminalOutcomeSuspendedThreads; tracing: InstanceAiTerminalOutcomeTracing; publishRunFinish: (threadId: string, runId: string, status: 'completed' | 'cancelled' | 'errored', reason?: string) => void; saveAgentTreeSnapshot: (threadId: string, runId: string, snapshotStorage: DbSnapshotStorage) => Promise; } export declare class InstanceAiTerminalOutcomeService { private readonly pendingTerminalOutcomes; private terminalOutcomeStorage?; private readonly eventBus; private readonly durableLog; private readonly dbSnapshotStorage; private readonly agentMemory; private readonly telemetry; private readonly logger; private readonly runState; private readonly suspendedThreads; private readonly tracing; private readonly publishRunFinish; private readonly saveAgentTreeSnapshot; constructor(options: InstanceAiTerminalOutcomeServiceOptions); evaluateTerminalResponse(threadId: string, runId: string, status: Exclude, options?: { messageGroupId?: string; correlationId?: string; workSummary?: WorkSummary; errorMessage?: string; errorCode?: InstanceAiErrorCode; suppressCompletedFallback?: boolean; }): Promise; evaluateWaitingResponse(threadId: string, runId: string, confirmationEvent: Extract | undefined, options?: { messageGroupId?: string; correlationId?: string; }): Promise; private getTerminalGuardEvents; private handleTerminalResponseDecision; private createTerminalOutcomeStorage; finishInvalidConfirmationRun(args: { threadId: string; runId: string; abortController: AbortController; snapshotStorage: DbSnapshotStorage; tracing?: InstanceAiTraceContext; }): Promise; private buildBackgroundTerminalOutcome; replayUndeliveredTerminalOutcomes(threadId: string, options?: { delivery?: 'snapshot' | 'event'; }): Promise; private persistTerminalOutcomeLineToSnapshot; private publishTerminalOutcomeLine; recordBackgroundTerminalOutcome(task: ManagedBackgroundTask): Promise; } export {};