/** * Single owner of how a pi-amq overlay is sized and framed. * * `ctx.ui.custom` resolves overlay geometry from `overlayOptions`, falling back to the * component's own `width` and finally to `undefined`. An overlay with no geometry is composited * straight over the conversation, so its lines interleave with the chat and become unreadable. * Every pi-amq overlay therefore declares geometry and draws its own frame. */ export declare const OVERLAY_OPTIONS: { readonly width: "78%"; readonly minWidth: 72; readonly maxHeight: "78%"; readonly anchor: "top-center"; readonly margin: { readonly top: 1; readonly left: 2; readonly right: 2; }; }; export declare function truncate(value: string, width: number): string; /** Convert logical strings into terminal-safe physical rows before framing or clipping. */ export declare function wrapOverlayLines(lines: readonly string[], width: number): string[]; export interface BorderedSection { readonly label?: string; readonly lines: readonly string[]; } /** Frames content so the overlay reads as its own surface rather than as text over the chat. */ export declare function borderedLines(title: string, lines: readonly string[], width: number): string[]; /** Frames labeled sections with full-width rules while preserving exact terminal row widths. */ export declare function borderedSections(title: string, sections: readonly BorderedSection[], width: number): string[]; //# sourceMappingURL=tui-overlay.d.ts.map