/**
 * Heartbeat Service — periodic conversation analysis for knowledge extraction.
 *
 * Every N minutes, for each chat scope (each folder + workspace) with
 * new human messages, routes a single prompt through the agent orchestrator.
 * The agent decides per item:
 *   - AUTO-CAPTURE (call create_entity directly, emits [auto-captured:...])
 *   - SUGGEST (emits [capture:...] line only, user must click to capture)
 *
 * State persists in SQLite (analysis_markers table) so restarts don't drop
 * analysis windows. An in-memory activity counter (humanMessageCount) skips
 * ticks for scopes with no new activity — zero LLM cost when no one posts.
 */
import type { AgentOrchestrator } from '../agent/orchestrator.js';
import type { MessageService } from './message-service.js';
import type { WorkspaceManager } from '../core/workspace-manager.js';
import type { WsHub } from '../server/ws-hub.js';
export declare class HeartbeatService {
    private messageService;
    private workspaceManager;
    private wsHub;
    private agent;
    private interval;
    private activity;
    private running;
    constructor(messageService: MessageService, workspaceManager: WorkspaceManager, wsHub: WsHub, agent: AgentOrchestrator | null);
    /** Called from the folder POST handler when a human message is sent. */
    trackMessage(folder: string, _messageId: number): void;
    /** Called from the workspace POST handler when a human message is sent to home chat. */
    trackWorkspaceMessage(_messageId: number): void;
    start(intervalMs?: number): void;
    stop(): void;
    private tick;
    private analyzeScope;
}
