import type { RegisteredProject } from "./project-registry.js";
import { GoalStore } from "./goal-store.js";
import type { GoalTriggerDispatcher } from "./goal-trigger-dispatcher.js";
import { SessionStore } from "./session-store.js";
import { GateStore } from "./gate-store.js";
import { TaskStore } from "./task-store.js";
import { TeamStore } from "./team-store.js";
import { StaffStore } from "./staff-store.js";
import { InboxStore } from "./inbox-store.js";
import { RoleStore } from "./role-store.js";
import { WorkflowStore } from "./workflow-store.js";
import { ToolManager } from "./tool-manager.js";
import { ProjectConfigStore } from "./project-config-store.js";
import { ToolGroupPolicyStore } from "./tool-group-policy-store.js";
import { ColorStore } from "./color-store.js";
import { SearchService } from "../search/search-service.js";
import { CostTracker } from "./cost-tracker.js";
import { GoalManager } from "./goal-manager.js";
import { SecretsStore } from "./secrets-store.js";
/**
 * A container holding a complete set of stores scoped to one project.
 *
 * Each registered project gets its own ProjectContext with stores pointing
 * at `<project-root>/.bobbit/state/` and `<project-root>/.bobbit/config/`.
 *
 * NOTE: Store constructors are being updated in parallel to accept
 * stateDir/configDir parameters. This file will compile once those
 * changes are merged.
 */
export declare class ProjectContext {
    readonly project: RegisteredProject;
    readonly stateDir: string;
    readonly configDir: string;
    readonly bobbitDir: string;
    readonly goalStore: GoalStore;
    readonly sessionStore: SessionStore;
    readonly gateStore: GateStore;
    readonly taskStore: TaskStore;
    readonly teamStore: TeamStore;
    readonly staffStore: StaffStore;
    readonly inboxStore: InboxStore;
    readonly colorStore: ColorStore;
    readonly searchIndex: SearchService;
    readonly costTracker: CostTracker;
    readonly goalManager: GoalManager;
    readonly secretsStore: SecretsStore;
    /**
     * Optional dispatcher for `goal_created` / `goal_archived` staff triggers.
     * Wired post-construction by `ProjectContextManager.setGoalTriggerDispatcher`
     * once `server.ts` has built the staff/inbox managers. Stays `null` in tests
     * that don't need the trigger surface.
     */
    private goalTriggerDispatcher;
    readonly roleStore: RoleStore;
    readonly workflowStore: WorkflowStore;
    readonly toolManager: ToolManager;
    readonly projectConfigStore: ProjectConfigStore;
    readonly toolGroupPolicyStore: ToolGroupPolicyStore;
    constructor(project: RegisteredProject);
    /** Open resources that require initialization (LanceDB + embedder). */
    open(): void;
    /**
     * Attach the shared `GoalTriggerDispatcher` so this context's GoalStore
     * mutations dispatch `goal_created` / `goal_archived` events to staff
     * inboxes. Idempotent and order-independent with respect to `open()` —
     * the manager wires every existing context (and every future
     * `getOrCreate`) after the dispatcher is constructed in `server.ts`.
     */
    setGoalTriggerDispatcher(dispatcher: GoalTriggerDispatcher | null): void;
    private applyGoalTriggerDispatcher;
    /** Close resources for clean shutdown. */
    close(): void;
}
//# sourceMappingURL=project-context.d.ts.map