/** * 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;