import type { DaoCoreConfig } from "../../config/types.daocore.js";
import type { GetReplyOptions, SourceReplyDeliveryMode } from "../get-reply-options.types.js";
import type { FinalizedMsgContext } from "../templating.js";
import type { FormatAbortReplyText, TryFastAbortFromMessage } from "./abort.runtime-types.js";
import type { GetReplyFromConfig } from "./get-reply.types.js";
import type { ReplyDispatchKind, ReplyDispatcher } from "./reply-dispatcher.types.js";
export type DispatchFromConfigResult = {
    queuedFinal: boolean;
    counts: Record<ReplyDispatchKind, number>;
    failedCounts?: Partial<Record<ReplyDispatchKind, number>>;
    sourceReplyDeliveryMode?: SourceReplyDeliveryMode;
    beforeAgentRunBlocked?: boolean;
};
export type DispatchFromConfigParams = {
    ctx: FinalizedMsgContext;
    cfg: DaoCoreConfig;
    dispatcher: ReplyDispatcher;
    replyOptions?: Omit<GetReplyOptions, "onBlockReply">;
    replyResolver?: GetReplyFromConfig;
    fastAbortResolver?: TryFastAbortFromMessage;
    formatAbortReplyTextResolver?: FormatAbortReplyText;
    /** Optional patch applied to the already loaded config before reply resolution. */
    configOverride?: DaoCoreConfig;
};
export type DispatchReplyFromConfig = (params: DispatchFromConfigParams) => Promise<DispatchFromConfigResult>;
