import type { MemoryStore } from '../store/index.js';
import type { MemoryPipeline } from './types.js';
import type { BeatExtractor } from '../beats/extractor.js';
export interface NarrativePipelineConfig {
    /** The store both subflows share. */
    readonly store: MemoryStore;
    /**
     * Beat extractor. Defaults to `heuristicExtractor()` — zero-dep,
     * zero-cost, baseline quality. Swap for `llmExtractor({ provider })`
     * for semantic quality.
     */
    readonly extractor?: BeatExtractor;
    /** Forwarded to `loadRecent` (how many beats to consider per turn). */
    readonly loadCount?: number;
    /** Forwarded to `pickByBudget`. */
    readonly reserveTokens?: number;
    readonly minimumTokens?: number;
    readonly maxEntries?: number;
    /** Tier filter for read (e.g. `['hot']`). */
    readonly tiers?: ReadonlyArray<'hot' | 'warm' | 'cold'>;
    /** Tier to tag written beats with. */
    readonly writeTier?: 'hot' | 'warm' | 'cold';
    /** Optional TTL for written beats (ms from write time). */
    readonly writeTtlMs?: number;
    /** Forwarded to `formatAsNarrative`. */
    readonly formatHeader?: string;
    readonly formatFooter?: string;
    readonly formatShowRefs?: boolean;
    readonly formatLeadIn?: string;
}
/**
 * Build the narrative read + write pipelines sharing a single store.
 * Returns `{ read, write }` ready to be passed to `Agent.memory()` via the appropriate `defineMemory` config (or used directly via `mountMemoryRead`/`mountMemoryWrite`).
 */
export declare function narrativePipeline(config: NarrativePipelineConfig): MemoryPipeline;
