/**
* General bleed extraction via qlmanage diffing.
*
* Bleed = ghost PDF images from CMArchiveManager's use-after-free cache bug.
* OfficeImport's cache replaces invisible drawables with stale PDFs, ADDING
* extra
elements to slides.
*
* We extract these by diffing our clean HTML against qlmanage's HTML:
* any
in QL that has no position-match in ours is bleed.
*
* Works for ANY PPTX file — no hardcoding needed.
*/
import type { BleedEntry, BleedRemoval, QLBleedData } from "../model/types.js";
export type { BleedEntry, BleedRemoval, QLBleedData };
/**
* Extract bleed entries by diffing QL HTML against our HTML.
*
* Detects BOTH:
* - Additions: QL has
elements our output doesn't (bleed PDFs to inject)
* - Removals: Our output has elements QL doesn't (own shapes replaced by bleed)
*
* Uses set-based position matching with 2px tolerance for rounding differences.
*/
export declare function extractBleedEntries(qlHtml: string, ourHtml: string): QLBleedData;
/** Run qlmanage and return the .qlpreview directory path. */
export declare function runQLManage(pptxPath: string): string;
/**
* Full pipeline: extract bleed for any PPTX file.
*
* 1. Runs qlmanage to get ground-truth HTML
* 2. Diffs against our clean HTML
* 3. Reads bleed PDF attachments from QL output
* 4. Returns structured bleed data ready for injection
*/
export declare function extractQLBleed(ourHtml: string, pptxPath: string): QLBleedData;