/**
 * Render an HTML file to a 1200×630 PNG — the Open Graph cover for a shared plan.
 *
 * When `agents artifacts share plan.html` runs, we screenshot the plan's own hero and use it
 * as the `og:image`, so the link unfurls into a card in Slack / iMessage / Twitter /
 * Discord. No AI, no central render service: it's a headless screenshot on the
 * publisher's machine, so it works identically for us and for any user, and costs
 * nothing.
 *
 * Browser resolution reuses the repo's own detector (`findFirstInstalledBrowser`,
 * the same auto-pick behind `agents browser`), then falls back to a managed
 * Chromium in the Playwright/Puppeteer caches (present on machines that have done
 * browser automation), then `PUPPETEER_EXECUTABLE_PATH`. If nothing headless-capable
 * is found, `captureCover` returns null and publishing proceeds without a cover —
 * the link still works, it just won't have a preview image.
 */
/** OG standard card size; captured at OG_SCALE× for retina crispness. */
export declare const OG_WIDTH = 1200;
export declare const OG_HEIGHT = 630;
/** Device scale factor for the capture — the served PNG is OG_WIDTH*OG_SCALE × OG_HEIGHT*OG_SCALE. */
export declare const OG_SCALE = 2;
/** Ordered list of candidate Chromium-family binaries to try for headless capture. */
export declare function candidateBrowsers(): string[];
/** Newest-first Chromium binaries under the Playwright / Puppeteer download caches. */
export declare function scanCaches(home?: string, platform?: NodeJS.Platform): string[];
/**
 * Screenshot `htmlPath`'s top 1200×630 (its hero) to a PNG buffer, or null if no
 * headless-capable browser is available or every candidate fails. Never throws —
 * a cover is a nice-to-have, never a reason to fail a publish.
 */
export declare function captureCover(htmlPath: string, timeoutMs?: number): Promise<Buffer | null>;
