/**
 * loadFacts — read-side stage that loads stored `Fact` entries into
 * `scope.loadedFacts`.
 *
 * Reads from scope:  `identity`
 * Writes to scope:   `loadedFacts` (appends — does not replace)
 *
 * Unlike `loadRecent` (which returns ALL entries and lets downstream
 * stages filter), `loadFacts` queries the store and keeps only entries
 * whose id matches the `fact:` prefix. Facts are typically few dozen
 * at most per identity — a linear scan after a bounded `list` call is
 * cheap.
 *
 * Why append, not replace?
 *   Same contract as `loadRecent` — pipelines may combine multiple
 *   load stages (e.g. facts + recent messages + beats). Appending lets
 *   each contribute without coordination.
 *
 * Note: this stage writes `loadedFacts` (a separate field from
 * `loaded`) because fact entries have a different payload type
 * (`MemoryEntry<Fact>`) than message entries (`MemoryEntry<Message>`).
 * Keeping them separate prevents format stages from misrouting entries.
 */
import type { TypedScope } from 'footprintjs';
import type { MemoryStore } from '../store/index.js';
import type { FactPipelineState } from './extractFacts.js';
export interface LoadFactsConfig {
    /** The store to read from. */
    readonly store: MemoryStore;
    /**
     * Upper bound on the `list` call's page size. Adapters may cap this
     * lower. Defaults to 100 — enough for typical identity/preference
     * inventories. Fact pipelines that accumulate task statuses or
     * commitments should raise this.
     */
    readonly limit?: number;
    /**
     * Optional tier filter. When set, only loads facts tagged with one
     * of these tiers. Matches the `loadRecent` / `loadRelevant` API.
     */
    readonly tiers?: ReadonlyArray<'hot' | 'warm' | 'cold'>;
}
export declare function loadFacts(config: LoadFactsConfig): (scope: TypedScope<FactPipelineState>) => Promise<void>;
//# sourceMappingURL=loadFacts.d.ts.map