/**
 * Shared test fixtures for the Task 10 integration coverage matrix.
 *
 * Factors out the `AgentManager` + `SessionStore` + `WorkspaceBackendRegistry`
 * + `SessionSummaryMaterializer` + `DefaultCapacityValidator` wiring that
 * every integration test rebuilds. Keeping this in an underscore-prefixed
 * internal module (Convention #4: `_fixtures.ts` does not bleed into any
 * barrel) lets the 11 integration files focus on invariant assertions rather
 * than boilerplate.
 *
 * DO NOT export from `src/session/index.ts` or any other public barrel.
 * This module is test-only and has no runtime consumers.
 */
import { AgentManager } from '../../../manager/agent/lifecycle.js';
import { ThreadManager } from '../../../manager/thread/lifecycle.js';
import { AgentRegistry } from '../../../registry/agent/definitions.js';
import { InMemorySessionStore } from '../../../store/session/memory.js';
import { InMemoryThreadStore } from '../../../store/thread/memory.js';
import type { BaseAgentConfig, BaseAgentResult } from '../../../types/agent/base.js';
import type { Agent } from '../../../types/agent/core.js';
import type { AgentDefinition } from '../../../types/agent/factory.js';
import type { AgentTaskContext, SendMessageOptions } from '../../../types/agent/task.js';
import type { RunId, SessionId, TenantId } from '../../../types/ids/index.js';
import type { ActorRef } from '../../../types/session/actor.js';
import type { Session } from '../../../types/session/entity.js';
import type { ProjectId, SummaryId, ThreadId } from '../../../types/session/ids.js';
import { DefaultCapacityValidator } from '../../handoff/capacity.js';
import { SessionSummaryMaterializer } from '../../summary/materialize.js';
import type { ExecFile, ExecFileResult } from '../../workspace/git-worktree.js';
import { WorkspaceBackendRegistry } from '../../workspace/registry.js';
export declare const DEFAULT_TENANT: TenantId;
export declare const OTHER_TENANT: TenantId;
export declare function stubLogger(): {
    debug: import("vitest").Mock<(...args: any[]) => any>;
    info: import("vitest").Mock<(...args: any[]) => any>;
    warn: import("vitest").Mock<(...args: any[]) => any>;
    error: import("vitest").Mock<(...args: any[]) => any>;
    child(): /*elided*/ any;
};
export declare function okExec(stdout?: string, stderr?: string): ExecFileResult;
export declare function userActor(userId: string, tenantId?: TenantId): ActorRef;
export declare function agentActor(agentId: string, tenantId?: TenantId): ActorRef;
/**
 * Builds a minimal {@link Agent} whose `run` produces a deterministic
 * assistant message. Tests that need custom output shape override via
 * {@link buildAgentCustom}.
 */
export declare function buildAgent(id: string, result?: string): Agent<BaseAgentConfig, BaseAgentResult>;
/**
 * Builds an agent with a caller-supplied `run`. Useful for tests that need
 * to simulate failures or spawn cascading agents.
 */
export declare function buildAgentCustom(id: string, run: Agent<BaseAgentConfig, BaseAgentResult>['run']): Agent<BaseAgentConfig, BaseAgentResult>;
export declare function buildDefinition(agent: Agent<BaseAgentConfig, BaseAgentResult>): AgentDefinition;
export interface IntegrationHarness {
    readonly store: InMemorySessionStore;
    readonly threadStore: InMemoryThreadStore;
    readonly threadManager: ThreadManager;
    readonly registry: AgentRegistry;
    readonly manager: AgentManager;
    readonly materializer: SessionSummaryMaterializer;
    readonly workspaceRegistry: WorkspaceBackendRegistry;
    readonly capacity: DefaultCapacityValidator;
    readonly tenantId: TenantId;
}
export interface IntegrationHarnessOptions {
    readonly tenantId?: TenantId;
    /** Pass `true` to register a no-op stubbed git-worktree driver. */
    readonly withWorktreeDriver?: boolean;
    readonly execFile?: ExecFile;
    /**
     * Deterministic summary ID generator — defaults to `sum_test_<n>`. Tests
     * asserting on the exact id should override.
     */
    readonly summaryIdGenerator?: () => SummaryId;
}
/**
 * Builds a full AgentManager + SessionStore + Materializer harness wired with
 * real components (not mocks). The `GitWorktreeDriver` uses a stubbed
 * `execFile` that returns empty stdout by default — tests exercising failure
 * modes inject a real {@link ExecFile}.
 */
export declare function buildHarness(options?: IntegrationHarnessOptions): IntegrationHarness;
/**
 * Seeds a Tenant → Project → Thread → Session quadruple and flips the session
 * into `active` so it is a legal spawn parent. Returns the project, thread,
 * and active session for the caller to drive spawns against.
 */
export declare function seedActiveParent(harness: IntegrationHarness, options?: {
    actor?: ActorRef;
    projectName?: string;
    tenantId?: TenantId;
    threadTitle?: string;
}): Promise<{
    project: import("../../../types/project/entity.js").Project;
    thread: import("../../../types/thread/entity.js").Thread;
    session: Session;
    actor: ActorRef;
}>;
/**
 * Constructs a fully populated {@link AgentTaskContext} bound to the supplied
 * parent session + actor. Tests override individual fields (depth, budget)
 * by merging.
 */
export declare function buildTaskContext(params: {
    sessionId: SessionId;
    projectId: ProjectId;
    threadId: ThreadId;
    tenantId: TenantId;
    parentActor: ActorRef;
    depth?: number;
    budget?: number;
    parentRunId?: RunId;
}): AgentTaskContext;
export declare function buildSendMessageOptions(params: {
    agentId: string;
    parentSessionId: SessionId;
    projectId: ProjectId;
    tenantId: TenantId;
    parentActor: ActorRef;
}): SendMessageOptions;
//# sourceMappingURL=_fixtures.d.ts.map