/**
 * PoolActivityView — P4.1 of multi-machine coherence: the pool-wide fold
 * behind `GET /parallel-work/activities?scope=pool` — "what is every machine
 * of mine working on, and is anything overlapping?".
 *
 * Spec: docs/specs/POOL-WIDE-PARALLEL-WORK-SPEC.md §3.
 *
 * Rules (all round-1-earned):
 *  - NET-NEW code on the reader's raw query() path (readOwnAutonomousRuns is
 *    own-stream-only by construction; no lifecycle helper exists).
 *  - The pool response is a DISCRIMINATED union (`kind: 'local'|'remote'`);
 *    absent fields are NAMED nulls, never fabricated.
 *  - `running` provenance asymmetry is structural: local rows are live
 *    in-memory truth; remote rows are replica-derived, staleness-tagged.
 *  - Remote `running` is derived PER INSTANCE (per sessionId / runId) then
 *    aggregated — a later terminal for session B never masks a
 *    still-running session A.
 *  - A `running:true` from a fold that hit a read bound carries
 *    `lowConfidence: true` (staleness measures recency, not completeness).
 *  - `possibleOverlap` flags EVERY machine pair showing the same topicId
 *    running (local↔remote and remote↔remote), annotated
 *    `recentMove: true` when the answer-complete placement stream shows an
 *    epoch change within the post-transfer closeout window.
 *  - SIGNAL ONLY: the view never gates, moves, or kills.
 */
import type { CoherenceJournalReader } from './CoherenceJournalReader.js';
export declare const RECENT_MOVE_WINDOW_MS: number;
export interface LocalActivityRow {
    kind: 'local';
    topicId: string;
    machineId: string;
    focus: string | null;
    tags: string[];
    refCount: number | null;
    updatedAt: string | null;
    nickname: string | null;
    running: boolean;
    stalenessMs: 0;
    intentVisibility: 'local';
    possibleOverlap?: string[];
    recentMove?: boolean;
}
export interface RemoteActivityRow {
    kind: 'remote';
    topicId: string;
    machineId: string;
    focus: null;
    tags: [];
    refCount: null;
    updatedAt: null;
    nickname: null;
    running: boolean;
    lastEventAt: string | null;
    lastEventKind: string | null;
    stalenessMs: number;
    artifactsKnown: boolean;
    intentVisibility: 'machine-local';
    lowConfidence?: boolean;
    possibleOverlap?: string[];
    recentMove?: boolean;
}
export type PoolActivityRow = LocalActivityRow | RemoteActivityRow;
export interface PoolViewDeps {
    ownMachineId: string;
    /** Today's local rows (ParallelActivityIndex.activities() shape). */
    local: Array<{
        topicId: number;
        focus: string | null;
        tags: string[];
        refCount: number;
        updatedAt: number | null;
        nickname: string | null;
        running: boolean;
    }>;
    reader: CoherenceJournalReader;
    limit?: number;
}
export interface PoolViewResult {
    rows: PoolActivityRow[];
    pool: {
        selfMachineId: string;
        replicasRead: number;
        boundHit: boolean;
    };
}
export declare function buildPoolActivityView(deps: PoolViewDeps): PoolViewResult;
//# sourceMappingURL=PoolActivityView.d.ts.map