/**
 * EventAccumulator — Shared module that bridges events to counters.
 *
 * - Adaptives call register(key, predicate) to register named counters
 * - EventBus events are run through predicates
 * - Counts stored in StateStore.session (session-scoped)
 * - Subscribers notified on every counter increment
 */
import type { StateStore } from '../state/StateStore';
import type { EventBus } from './EventBus';
import type { NormalizedEvent } from './types';
export interface EventAccumulator {
    /** Register a named counter with a predicate callback. The adaptive provides ALL filtering logic. */
    register(key: string, predicate: (event: NormalizedEvent) => boolean, needsTimestamps?: boolean): void;
    /** Read the accumulated count for a registered key. */
    getCount(key: string, withinMs?: number): number;
    /** Subscribe to counter changes. Returns unsubscribe function. */
    subscribe(callback: () => void): () => void;
    /** Stop accumulating and unsubscribe from EventBus. */
    destroy(): void;
}
export interface EventAccumulatorOptions {
    eventBus: EventBus;
    stateStore: StateStore;
}
/**
 * Create an EventAccumulator instance.
 */
export declare function createEventAccumulator(options: EventAccumulatorOptions): EventAccumulator;
