import { AgentVariantsOrchestrator, type PreviewQaRunner, type ProjectEnvironment, type WorktreeManagerLike } from './WorktreeOrchestrator';
import { SessionStore } from './SessionStore';
import { PendingChangesAdapter, type BridgeQueue } from './pendingChangesAdapter';
import type { Brief, DesignContextEntry, VariantQaResult } from './contracts';
import type { ChangeRequest, VariantChangeItem } from '../../types/change-request-types';
export declare class FakeBridge implements BridgeQueue {
    intents: ChangeRequest[];
    queueChangeRequest(intent: ChangeRequest): void;
    variantItems(): VariantChangeItem[];
}
export interface RecordedCall {
    method: string;
    args: unknown[];
}
export declare class FakeWorktreeManager implements WorktreeManagerLike {
    calls: RecordedCall[];
    diffByPath: Record<string, string>;
    freePortSeq: number;
    startDevServerImpl: () => Promise<unknown>;
    /** Override to simulate slow/hanging provisioning. Defaults to the
     *  immediate fake. A test can set this to `() => new Promise(() => {})` to
     *  exercise the provisioning timeout path. */
    createWorktreesImpl: ((sessionId: string, count: number) => Promise<string[]>) | undefined;
    createWorktrees(sessionId: string, count: number): Promise<string[]>;
    freshWorktreePathFactory: (sessionId: string, i: number) => string;
    createFreshWorktrees(sessionId: string, count: number, _template: unknown, designContext: ReadonlyArray<DesignContextEntry | undefined> | undefined, _sourceContext: unknown, destinationParent: string): Promise<string[]>;
    getDiff(worktreePath: string): Promise<string>;
    cleanupSession(sessionId: string, freshDestinationParent?: string): Promise<void>;
    getFreePort(): Promise<number>;
    startDevServer(worktreePath: string, port: number, cmd: string, args: string[], env: Record<string, string>): Promise<never>;
    stopDevServer(): Promise<void>;
    getProjectCwdInWorktree(worktreePath: string): Promise<string>;
    applyDiffToProjectImpl: (diff: string, projectPath: string) => Promise<void>;
    applyDiffToProject(diff: string, projectPath: string): Promise<void>;
}
export declare const ENV: ProjectEnvironment;
export interface OrchestratorHarness {
    installCalls: string[];
    materializeCalls: Array<{
        source: string;
        destination: string;
    }>;
    installResult: Promise<void>;
    materializeResult: Promise<void>;
    destinationExists: boolean;
    telemetryEvents: Array<{
        event: string;
        properties?: Record<string, unknown>;
    }>;
    switchPreviewPortCalls: Array<number | null>;
}
export declare const PASSING_QA: VariantQaResult;
export declare const passingQaRunner: PreviewQaRunner;
export declare function buildOrchestrator(opts?: {
    destinationExists?: boolean;
    previewQaRunner?: PreviewQaRunner;
    provisionTimeoutMs?: number;
    /** Override the resolved project environment (defaults to {@link ENV},
     *  framework 'vite'). Pass e.g. `{ ...ENV, framework: 'static', devCommand: '' }`
     *  to exercise the no-dev-server static existing-project path. */
    env?: ProjectEnvironment;
}): {
    orchestrator: AgentVariantsOrchestrator;
    worktreeManager: FakeWorktreeManager;
    bridge: FakeBridge;
    adapter: PendingChangesAdapter;
    store: SessionStore;
    harness: OrchestratorHarness;
};
export declare const briefs: (n: number) => Brief[];
export declare function settleBackgroundWork(): Promise<void>;
export declare const createTempDestination: () => string;
export declare const readJson: (filePath: string) => Record<string, unknown>;
//# sourceMappingURL=WorktreeOrchestrator.testHelpers.d.ts.map