import type { FastifyInstance } from "fastify";
import { type AppConfig } from "../config.js";
import type { JaitDB } from "../db/index.js";
import type { SessionService } from "../services/sessions.js";
import type { UserService } from "../services/users.js";
import type { ToolRegistry } from "../tools/registry.js";
import type { ToolContext } from "../tools/contracts.js";
import type { AuditWriter } from "../services/audit.js";
import type { ToolResult } from "../tools/contracts.js";
import type { MemoryEntry, MemoryService } from "../memory/contracts.js";
import type { SurfaceRegistry } from "../surfaces/registry.js";
import type { WsControlPlane } from "../ws.js";
import type { SessionStateService } from "../services/session-state.js";
import type { ProjectService } from "../services/projects.js";
import type { ProviderRegistry } from "../providers/registry.js";
import type { SkillRegistry } from "../skills/index.js";
export declare function isSourceVisible(entry: MemoryEntry): boolean;
export declare function getExternalFileMutationPath(tool: string, args: unknown): string | null;
export interface ChatRouteDeps {
    db?: JaitDB;
    sessionService?: SessionService;
    userService?: UserService;
    toolRegistry?: ToolRegistry;
    surfaceRegistry?: SurfaceRegistry;
    audit?: AuditWriter;
    memoryService?: MemoryService;
    ws?: WsControlPlane;
    sessionState?: SessionStateService;
    projectService?: ProjectService;
    providerRegistry?: ProviderRegistry;
    skillRegistry?: SkillRegistry;
    toolExecutor?: (toolName: string, input: unknown, context: ToolContext, options?: {
        dryRun?: boolean;
        consentTimeoutMs?: number;
    }) => Promise<ToolResult>;
}
export declare function registerChatRoutes(app: FastifyInstance, config: AppConfig, depsOrDb?: JaitDB | ChatRouteDeps, sessionServiceArg?: SessionService): void;
//# sourceMappingURL=chat.d.ts.map