import { type MemoryPrefetchState } from "../runtime/hooks/memory-hooks.js";
import type { HookRegistry } from "../contracts/hooks.js";
import type { RuntimeLogger } from "../runtime/hooks/hook-registry.js";
import type { MemoryDreamRuntimeProvider, MemoryHandlerProvider, MemoryLearningSink, MemoryProvider, MemoryRuntimeHookProvider, MemoryToolProvider, ProjectMemoryStore, ToolCatalog } from "../runtime/ports/index.js";
import type { LLMTransport } from "./provider-core-facade.js";
export interface MemoryProviderState {
    recallProvider: MemoryProvider | null;
    runtimeHookProvider: MemoryRuntimeHookProvider | null;
    learningSink: MemoryLearningSink | null;
    toolProvider: MemoryToolProvider | null;
    handlerProvider: MemoryHandlerProvider | null;
    dreamProvider: MemoryDreamRuntimeProvider | null;
    userId: string;
}
export declare function ensureLocalMemoryProvider(currentUserId: string): MemoryProviderState;
export interface RegisterMemoryRuntimeHooksDeps {
    hooks: HookRegistry;
    currentUserId: string;
    log: RuntimeLogger;
    prefetchState: MemoryPrefetchState;
    getLastUserMessage: () => string | undefined;
    getLastAssistantMessage: () => string | undefined;
    resolveSmallModelClient: () => {
        transport: LLMTransport;
        apiKey: string;
        model: string;
    } | null;
}
export declare function registerMemoryRuntimeHooks(deps: RegisterMemoryRuntimeHooksDeps): MemoryProviderState;
export interface RegisterMemoryToolDeps {
    memdir: ProjectMemoryStore;
    memoryProvider: MemoryToolProvider | null;
    memoryUserId: string;
    toolCatalog: ToolCatalog;
    sendNotification?: (method: string, params: Record<string, unknown>) => void;
}
export declare function registerMemoryTool(deps: RegisterMemoryToolDeps): void;
