import type { SessionMeta } from './session-stream'; export declare class DaemonReporter { readonly sessionId: string; readonly meta: SessionMeta; private readonly startedAtISO; private lines; private ended; /** True once the daemon relay accepted session-start (or a later retry). */ private announced; /** Epoch ms of the last announce attempt (re-announce throttle). */ private lastAnnounceAt; /** Frames produced while not announced — flushed after a successful re-announce. */ private readonly pending; /** Re-entrancy guard: concurrent announce/flush calls must not double-send. */ private flushing; constructor(meta: SessionMeta); /** Announces the session to the daemon (best-effort, non-blocking). */ connect(): void; /** Tees a console line into the stream buffer. */ line(text: string, stream?: 'stdout' | 'stderr'): void; /** Signals session end to the daemon (best-effort, one re-announce retry). */ end(exitCode: number | null): Promise; private startPayload; private announce; /** Throttled re-announce while the relay is unreachable (never a tight loop). */ private maybeReannounce; private queuePending; private flushPending; private persist; }