/**
 * AgentIntegrationHarness — Multi-agent test harness for A2A flows.
 *
 * Seeds an event and runs agents in subscription order. Returns all
 * CycleEvents produced, in causal order. Covers the exact scenarios
 * that break in production if untested:
 *
 *   "Outreach Writer publishes → Lead Qualifier consumes → CRM updated"
 *
 * @public
 */
import type { CloudEvent } from "../ports/event-bus.js";
import type { CycleEvent } from "../orchestration/ooda/types.js";
import { TestEventBus } from "./test-event-bus.js";
import { TestBrainPort } from "./test-brain-port.js";
export interface HarnessAgent {
    agentId: string;
    triggerCycle(opts: {
        dryRun: boolean;
        initialContext?: Record<string, unknown>;
    }): Promise<{
        runId: string;
        status: string;
    }>;
}
export declare class AgentIntegrationHarness {
    readonly bus: TestEventBus;
    readonly brain: TestBrainPort;
    private events;
    constructor();
    /**
     * Seed an event and run agents in subscription order.
     *
     * Each agent runs `triggerCycle({ dryRun: true, initialContext })`.
     * Events published by agents are captured and fed to subsequent agents.
     */
    runFlow(agents: HarnessAgent[], seedEvent: CloudEvent): Promise<CycleEvent[]>;
    /** Assert that a specific event was published to a stream. */
    expectPublished(stream: string, type: string): Promise<CloudEvent[]>;
    /** Assert that an agent produced a cycle with a given status. */
    expectCycle(_agentId: string, _status: string): Promise<void>;
    /** Clear all state. */
    reset(): void;
}
//# sourceMappingURL=integration-harness.d.ts.map