import type { CanvasSource } from './source.js'; import type { NodeMeta, NodeRow, NodeStatus, SubscriptionRef } from './types.js'; /** The exact JSON shape `crtr --json node inspect show ` emits (see * `nodeShow`'s `run`, `src/commands/node.ts`) — mirrored here, not imported, * to avoid a commands→canvas value dependency. */ export interface RemoteShowResponse { node: NodeMeta; reports: { node_id: string; name: string; kind: string; status: string; active: boolean; }[]; managers: { node_id: string; name: string; kind: string; status: string; active: boolean; }[]; artifacts: { report: number; doc: number; roadmap: number; }; pending_crons: number; paths: { context_dir: string; reports_dir: string; session_file: string | null; }; follow_up: string; } export declare class RemoteCanvasSource implements CanvasSource { private readonly previewEndpoint; private readonly relayToken; private readonly exec; private nodeCache; private rosterCache; private viewCache; constructor(previewEndpoint: string, relayToken: string); /** Drops every cached entry — called on a `RemoteEventStream` `'nodes'` (or * `'inbox'`) event so the next read re-fetches fresh state. */ invalidate(): void; private execJson; private fetchShow; /** The full passthrough object `node inspect show` produces — used by * `nodeShow`'s remote branch (`src/commands/node.ts`) to return the exact * same shape a local read would, without re-deriving it. */ rawShow(id: string): Promise; getNode(id: string): Promise; getRow(id: string): Promise; listNodes(filter?: { status?: NodeStatus | NodeStatus[]; }): Promise; subscriptionsOf(id: string): Promise; subscribersOf(id: string): Promise; view(root: string): Promise; ticketCountsForView(root: string): Promise>; hasActiveLiveSubscription(id: string): Promise; }