import type { ChatEnvelope, AdapterContext } from '../types/chat-envelope.js';
import type { FormatAdapter, SemanticMapper, StageRecorder } from '../format-adapters/index.js';
import type { JsonObject } from '../types/json.js';
export type OutboundStage = 'semantic_map_from_chat' | 'format_build' | 'outbound_passthrough';
export interface OutboundPassthroughConfig {
    mode: 'protocol';
    factory: (chat: ChatEnvelope, ctx: AdapterContext) => Promise<JsonObject> | JsonObject;
}
export interface OutboundPlan {
    protocol?: string;
    stages: OutboundStage[];
    formatAdapter?: Pick<FormatAdapter, 'buildResponse'>;
    semanticMapper?: Pick<SemanticMapper, 'fromChat'>;
    passthrough?: OutboundPassthroughConfig;
}
export interface OutboundPipelineOptions {
    chat: ChatEnvelope;
    context: AdapterContext;
    plan: OutboundPlan;
    stageRecorder?: StageRecorder;
}
export declare function runOutboundPipeline(options: OutboundPipelineOptions): Promise<JsonObject>;
