import { type LanguageModel } from 'ai'; import { type AgentConfig, type ExtractionConfig, type FlowAgentConfig, type ExtractionSnapshot, type Session, type FlowManagerState, type RunContext, type HarnessConfig } from '../types/index.js'; export interface ExtractionEngineOptions { defaultModel?: HarnessConfig['defaultModel']; telemetry?: HarnessConfig['telemetry']; } export declare class ExtractionEngine { private options; constructor(options: ExtractionEngineOptions); getExtractionConfig(agent: AgentConfig, session: Session, helpers: { getFlowState: (session: Session, agentId: string) => FlowManagerState | undefined; getFlowNode: (agent: FlowAgentConfig, nodeId?: string) => FlowAgentConfig['flow']['nodes'][number] | undefined; isFlowAgent: (agent: AgentConfig) => agent is FlowAgentConfig; }): { config: ExtractionConfig; nodeId?: string; } | null; private getExtractionMemoryKey; private toExtractionData; readExtractionSnapshot(session: Session, memoryKey: string): ExtractionSnapshot | null; writeExtractionSnapshot(session: Session, snapshot: ExtractionSnapshot, touchSession: (session: Session) => void): void; mergeExtractionIntoFlowState(session: Session, agent: FlowAgentConfig, data: Record, helpers: { getFlowState: (session: Session, agentId: string) => FlowManagerState | undefined; setFlowState: (session: Session, agentId: string, state: FlowManagerState) => void; }): void; buildExtractionSystemBlock(snapshot: ExtractionSnapshot): string; runTurnExtraction(agent: AgentConfig, context: RunContext, input: string, helpers: { getFlowState: (session: Session, agentId: string) => FlowManagerState | undefined; setFlowState: (session: Session, agentId: string, state: FlowManagerState) => void; getFlowNode: (agent: FlowAgentConfig, nodeId?: string) => FlowAgentConfig['flow']['nodes'][number] | undefined; isFlowAgent: (agent: AgentConfig) => agent is FlowAgentConfig; touchSession: (session: Session) => void; emitMetric?: (name: string, data: Record) => void; }, abortSignal?: AbortSignal, opts?: { model?: LanguageModel; }): Promise; }