import type { DetectedByCheck } from '../packs/schemas/manifest.js';
export interface DetectionContext {
    /** Current working directory (absolute path). Informational; not used by current kinds. */
    cwd: string;
    /** File-existence map pre-staged from `cwd`. Key = relative path; value = true if present. */
    files: Record<string, boolean>;
    /** Directory-existence map pre-staged from `cwd`. */
    dirs: Record<string, boolean>;
    /**
     * File contents pre-staged from `cwd`. Key = relative path; value = file body.
     * Empty / unread files map to ''. JSON files get parsed by the file_match
     * evaluator on demand (no caching at the evaluator layer — caller may LRU
     * around matchesDetectedBy itself per IDF.3 follow-up).
     */
    fileContents: Record<string, string>;
    /**
     * Recent memory hits (body content) — caller queries engine recall + concatenates
     * before staging. memory_match runs regex against this single string.
     */
    memoryBodies: string;
    /** Recent prompt history (concatenated). conversation_signal runs against this. */
    recentPrompts: string;
    /** User explicitly pinned this pack (e.g. via active.json with pin: true). */
    userPinned: boolean;
}
/**
 * Walks `detectedBy[]` and returns true iff ANY clause matches. Empty array
 * → true (back-compat: a pack with no detected_by is always-on among
 * opted-in packs).
 */
export declare function matchesDetectedBy(detectedBy: readonly DetectedByCheck[], ctx: DetectionContext): boolean;
//# sourceMappingURL=detection.d.ts.map