/**
 * ConversationMeshView — P3.1 of multi-machine coherence: the fold behind
 * `GET /threadline/conversations?scope=mesh` — "which machine holds each
 * agent-to-agent conversation, and is it bound to a topic?".
 *
 * Spec: docs/specs/THREADLINE-CONVERSATION-COHERENCE-SPEC.md §3.2.
 *
 * Rules:
 *  - OWN rows come from the LIVE ConversationStore (the authority — no
 *    journal read for own truth; own-stream journal entries are ignored).
 *  - REPLICA rows fold from peer journal streams under the P1 reader's
 *    existing bounds; fold rows are keyed by the COMPOSITE
 *    (holderMachineId, conversationId); per-stream last-writer on seq
 *    (each machine's own stream is the only writer for its conversations).
 *  - A replica stream marked gapped/suspect renders its rows with an
 *    explicit streamStatus qualifier; a fold that hit a read bound carries
 *    the partial-result flag.
 *  - SIGNAL ONLY: the view answers "where is it?" — it never routes,
 *    re-binds, or closes anything.
 */
import type { Conversation } from './ConversationStore.js';
import type { CoherenceJournalReader } from '../core/CoherenceJournalReader.js';
export interface MeshConversationRow {
    kind: 'own' | 'replica';
    conversationId: string;
    peerFingerprint: string;
    holderMachineId: string;
    boundTopicId?: number;
    status: 'open' | 'closed';
    /** Replica rows: the stream's staleness; own rows: 0. */
    stalenessMs: number;
    /** Replica rows: the P1 stream status (current/behind/gapped/suspect/reset). */
    streamStatus?: string;
    /** True when the fold hit a read bound — older lifecycle may be missing. */
    partial?: boolean;
}
export interface MeshViewDeps {
    ownMachineId: string;
    /** The live store's conversations (the authority for own rows). */
    ownConversations: Conversation[];
    /** Absent = local scope: own rows only, no journal read. */
    reader?: CoherenceJournalReader;
    /** P1 reader query limit per call (bounded). */
    limit?: number;
}
export declare function buildMeshConversationView(deps: MeshViewDeps): {
    rows: MeshConversationRow[];
    partial: boolean;
};
//# sourceMappingURL=ConversationMeshView.d.ts.map