export type GraphicsProtocol = "iterm" | "kitty" | "none";
/**
 * Detect which inline-image graphics protocol the current terminal supports.
 *
 * @param env   Environment to inspect (defaults to `process.env`).
 * @param isTTY Whether stdout is a TTY (defaults to `process.stdout.isTTY`).
 *              Graphics are only emitted to a real interactive terminal.
 */
export declare function detectGraphicsProtocol(env?: NodeJS.ProcessEnv, isTTY?: boolean): GraphicsProtocol;
/**
 * Encode a base64 image payload into an inline-image escape sequence for the
 * given protocol. Returns an empty string for the "none" protocol so callers
 * can append unconditionally.
 *
 * When `rows` is given, the image is constrained to that many terminal cells
 * tall (aspect ratio preserved) and, for kitty, the cursor is told not to
 * move (`C=1`). Callers that interleave images with a TUI live frame need a
 * deterministic height — see `encodeInlineImageBlock`.
 */
export declare function encodeInlineImage(base64: string, protocol: GraphicsProtocol, rows?: number): string;
/** Default preview height (in terminal rows) for inline image blocks. */
export declare const INLINE_IMAGE_ROWS = 12;
/**
 * Encode an inline image as a fixed-height block whose visual height exactly
 * matches its newline count.
 *
 * A raw image escape occupies many terminal rows while contributing zero
 * newlines to the written stream — any TUI layer that counts `\n`s to erase
 * or reposition its live frame (Ink's log-update does exactly that) then
 * erases at the wrong offset, stranding fragments of the old frame in
 * scrollback (orphaned `⏺` rows around the image).
 *
 * This emits `rows` real newlines to reserve the space (all scrolling is
 * caused by plain newlines every layer can account for), saves the cursor,
 * jumps to the top of the reserved block, draws the height-constrained image
 * there, and restores the cursor to the line after the block. The returned
 * string contains exactly `rows` newlines and renders exactly `rows` tall.
 */
export declare function encodeInlineImageBlock(base64: string, protocol: GraphicsProtocol, options?: {
    rows?: number;
    leftPad?: string;
}): string;
//# sourceMappingURL=terminal-graphics.d.ts.map