import type { JsonObject } from '../../conversion/hub/types/json.js';
import type { ServerToolFollowupInjectionPlan } from '../types.js';
export type CapturedChatSeed = {
    model?: string;
    messages: JsonObject[];
    tools?: JsonObject[];
    parameters?: Record<string, unknown>;
};
export declare function extractCapturedChatSeed(source: unknown): CapturedChatSeed | null;
export declare function normalizeFollowupParameters(value: unknown): Record<string, unknown> | undefined;
export declare function dropToolByFunctionName(tools: JsonObject[] | undefined, dropName: string): JsonObject[] | undefined;
/**
 * Build a canonical followup request body from injection ops.
 *
 * Important: this returns a protocol-agnostic "chat-like" payload:
 * { model, messages, tools?, parameters? }
 *
 * The followup is expected to re-enter HubPipeline at the chat-process entry,
 * so we must not convert to /v1/responses or /v1/messages here.
 */
export declare function buildServerToolFollowupChatPayloadFromInjection(args: {
    adapterContext: unknown;
    chatResponse: JsonObject;
    injection: ServerToolFollowupInjectionPlan;
}): JsonObject | null;
