/** * Heartbeat Manager for Grain Analytics * Tracks session activity with consent-aware behavior */ import type { ActivityDetector } from './activity'; export interface HeartbeatConfig { activeInterval: number; inactiveInterval: number; debug?: boolean; } export interface HeartbeatTracker { trackSystemEvent(eventName: string, properties: Record): void; hasConsent(category?: string): boolean; getEffectiveUserId(): string; getEphemeralSessionId(): string; getSessionId(): string; getCurrentPage(): string | null; getEventCountSinceLastHeartbeat(): number; resetEventCountSinceLastHeartbeat(): void; } export declare class HeartbeatManager { private config; private tracker; private activityDetector; private heartbeatTimer; private isDestroyed; private lastHeartbeatTime; private currentInterval; private hasSentPageLoadHeartbeat; constructor(tracker: HeartbeatTracker, activityDetector: ActivityDetector, config: HeartbeatConfig); /** * Send initial heartbeat when page loads */ private sendPageLoadHeartbeat; /** * Schedule the next heartbeat based on current activity */ private scheduleNextHeartbeat; /** * Send heartbeat event */ private sendHeartbeat; /** * Destroy the heartbeat manager */ destroy(): void; } //# sourceMappingURL=heartbeat.d.ts.map