import { ProductOrchestrator } from "../orchestration/agent-instance.js";
import { ProductPlanner } from "../orchestration/product-planner.js";
import { AgentProcessManager } from "../runtime/infra/agent-process.js";
import type { AgentConfigStore } from "../runtime/infra/agent-config-store.js";
import type { AcpDetector } from "../runtime/infra/acp-detector.js";
export interface ProductCoordinatorHost {
    acpDetector: AcpDetector;
    agentConfigStore: AgentConfigStore | null;
    productOrchestrator: ProductOrchestrator | null;
    productPlanner: ProductPlanner | null;
    productProcessManager: AgentProcessManager | null;
    emitAgentStatus(agentId: string, state: string, extra?: {
        missedBeats?: number;
        lastActivityAt?: number;
        usage?: {
            inputTokens: number;
            outputTokens: number;
            totalTokens: number;
        };
    }): void;
    handleMcpToolCall(memberId: string, tool: string, args: Record<string, unknown>): Promise<unknown>;
    sendNotification(method: string, params: Record<string, unknown>): void;
}
/** productId → 容器项目 id(R2 容器优先,与 solo-handler.soloProjectMap 对称)。终态回写用。
 *  定义在此(callbacks 所在文件)与 solo 对称;product-handler 再导出供 ACP 入口/测试引用。 */
export declare const productProjectMap: Map<string, string>;
/**
 * 终态回写 product 容器项目的 planStatus(比照 R1 solo onTerminal),并 re-push 项目使 历史方案
 * 刷新后留存。**仅当项目仍 "running" 时迁移**——避免"完成晚到覆盖取消"或反向覆盖(R1 cancel-clobber
 * 教训)。成功 → "completed";失败 → "failed";取消 → "cancelled"。
 */
export declare function writeProductTerminalPlanStatus(host: ProductCoordinatorHost, productId: string, status: "completed" | "failed" | "cancelled"): void;
export declare function ensureProductOrchestrator(host: ProductCoordinatorHost): ProductOrchestrator;
export declare function ensureProductPlanner(host: ProductCoordinatorHost): ProductPlanner;
