export interface TransientSnapshot {
    cols: number;
    rows: number;
    /** Raw ANSI captured from tmux capture-pane. Useful for hashing/dedup. */
    ansi: string;
}
/** Attempt to capture a fresh ANSI snapshot from an observe backend. Returns
 *  null if the backend isn't observe-capable, the pane has gone away, or
 *  the external backend refuses to answer. Callers should fall back to the legacy renderer
 *  path on null. */
export declare function tryCapturePipeSnapshot(backend: unknown, fallbackCols: number, fallbackRows: number): TransientSnapshot | null;
/**
 * True when the backend's screen can change WITHOUT bumping the worker's
 * onPtyData activity watermark — i.e. an observe backend that has paused its
 * change-emission poller for a live web-attach (ZellijObserveBackend). In that
 * window the watermark is not a sound snapshot-invalidation source.
 */
export declare function isScreenSelfDriven(backend: unknown): boolean;
/**
 * Whether startScreenUpdates must (re)capture the pane this tick.
 *
 * Steady state: the screen is reconstructed only when `lastPtyActivityAtMs`
 * advances — onPtyData is the single point that both bumps it and feeds the
 * renderer, so an unchanged watermark means a byte-identical screen and a
 * capture would be pure waste. That invariant fails when `screenSelfDriven` is
 * true (observe backend with emission paused for a live attach): the pane keeps
 * changing but the watermark is frozen, so we must capture unconditionally —
 * the pre-optimization behaviour — until the attach drops and the poller (hence
 * the watermark) resumes.
 */
export declare function shouldCaptureScreen(opts: {
    ptyActivity: number;
    lastCapturedPtyActivity: number;
    screenSelfDriven: boolean;
}): boolean;
/** Render a tmux pipe-pane snapshot to a PNG buffer. Returns null when the
 *  backend can't provide a snapshot — caller falls back to the legacy
 *  long-lived-renderer path. */
export declare function snapshotToPng(backend: unknown, fallbackCols: number, fallbackRows: number): Promise<{
    png: Buffer;
    ansi: string;
    content: string;
} | null>;
/** Render a tmux pipe-pane snapshot to filtered text (drops the bare prompt
 *  + input echo lines, same rules as TerminalRenderer.snapshot()). Returns
 *  null when the backend can't provide a snapshot. */
export declare function snapshotToText(backend: unknown, fallbackCols: number, fallbackRows: number, opts: {
    filter: boolean;
}): Promise<{
    content: string;
    ansi: string;
} | null>;
//# sourceMappingURL=transient-snapshot.d.ts.map