import type { AgentLogger, ToolInvoker } from "../agent/types.js";
import type { HookRegistry } from "../contracts/hooks.js";
import type { NotificationMethod, NotificationMethodMap } from "../protocol/notifications.js";
import type { AcpPermissionRequestParams } from "../protocol/wire/index.js";
import type { MemoryPrefetchState } from "../runtime/hooks/memory-hooks.js";
import type { BackgroundTaskManager } from "../runtime/infra/background-tasks.js";
import type { TaskStore } from "../runtime/infra/task-runtime.js";
import type { MemoryDreamRuntimeProvider, MemoryHandlerProvider, PermissionMetadataResolver, PermissionRuleEnginePort, PathService, ProjectMemoryStore, ToolCatalog } from "../runtime/ports/index.js";
import type { McpManager } from "../skills/mcp/mcp-manager.js";
import type { PluginLoader } from "../skills/plugins/plugin-loader.js";
import type { CliAgentClient } from "./cli-agent-builder.js";
import { type CliCoreToolHostDeps } from "./core-tool-coordinator.js";
import type { LLMTransport } from "./provider-core-facade.js";
import { type FileWatcher } from "./runtime-watcher-bootstrap.js";
import { configureSkillMetaToolBootstrap } from "./skill-meta-tool-bootstrap.js";
export type { FileWatcher };
export interface AgentRuntimeBootstrapDeps {
    config: Record<string, unknown>;
    log: AgentLogger;
    taskStore: TaskStore;
    backgroundTasks: BackgroundTaskManager;
    sessionId: string;
    getTurnId(): string;
    projectRoot: string;
    pathService: PathService;
    memdir: ProjectMemoryStore;
    currentUserId: string;
    memoryPrefetchState: MemoryPrefetchState;
    getLastUserMessage(): string | undefined;
    getLastAssistantMessage(): string | undefined;
    resolveSmallModelClient(): {
        transport: LLMTransport;
        apiKey: string;
        model: string;
    } | null;
    agentClient: CliAgentClient;
    toolCatalog: ToolCatalog;
    currentMcpManager: McpManager | null;
    setMcpManager(manager: McpManager | null): void;
    setMcpReady(ready: Promise<void>): void;
    setPluginLoader(loader: PluginLoader): void;
    getPluginSkills(): ReturnType<PluginLoader["getPluginSkills"]>;
    getAgent(): Parameters<typeof configureSkillMetaToolBootstrap>[0]["getAgent"] extends () => infer T ? T : never;
    getAcpPermissionSession(): {
        sessionId: string;
        requestPermission(params: AcpPermissionRequestParams): Promise<{
            optionId?: string;
        }>;
    } | undefined;
    sendNotification<M extends NotificationMethod>(method: M, params: NotificationMethodMap[M]): void;
    isPetActive(): boolean;
    currentPermissionUnregister?: (() => void) | null;
    coreToolHost: CliCoreToolHostDeps;
    toolInvoker: ToolInvoker;
    currentFileWatcher: FileWatcher | null;
    setFileWatcher(watcher: FileWatcher | null): void;
}
export interface AgentRuntimeBootstrapResult {
    hooks: HookRegistry;
    memoryHandlerProvider: MemoryHandlerProvider | null;
    memoryDreamProvider: MemoryDreamRuntimeProvider | null;
    memoryUserId: string;
    permissionChecker: PermissionMetadataResolver;
    permissionUnregister: () => void;
    ruleEngine: PermissionRuleEnginePort;
}
export declare function configureAgentRuntimeBootstrap(deps: AgentRuntimeBootstrapDeps): AgentRuntimeBootstrapResult;
