import { type SymiConfig } from "../../config/config.js";
import type { MsgContext } from "../templating.js";
import type { GetReplyOptions, ReplyPayload } from "../types.js";
import type { RunPreparedReplyParams } from "./get-reply-run.js";
/**
 * Discriminated result from `prepareReplyTurn`. Either an early reply
 * (the prep produced a synthetic reply that bypasses the agent run —
 * e.g. directive ack, inline action result) OR the prepared params for
 * `runPreparedReply` / `prepareAgentRun`.
 *
 * Path A of Phase 13: this shape is what `runGlassUiTurn` consumes to
 * take the prep work and route it through `runUnifiedTurn` instead of
 * `runPreparedReply` → `runReplyAgent`.
 */
export type PreparedReplyTurn = {
    kind: "early-reply";
    reply: ReplyPayload | ReplyPayload[] | undefined;
} | {
    kind: "ready";
    runPreparedReplyParams: RunPreparedReplyParams;
};
/**
 * The prep portion of the chain that builds everything needed for
 * `runPreparedReply`. Extracted from `getReplyFromConfig` (Phase 13 /
 * Path A) so the new pipeline (`runUnifiedTurn`) can consume the same
 * prep without going through the chain's `runReplyAgent` orchestration.
 *
 * Behaviour is identical to the previous inline body of
 * `getReplyFromConfig`. `getReplyFromConfig` is now a thin wrapper that
 * calls `prepareReplyTurn` and dispatches to `runPreparedReply` on
 * success.
 */
export declare function prepareReplyTurn(ctx: MsgContext, opts?: GetReplyOptions, configOverride?: SymiConfig): Promise<PreparedReplyTurn>;
