export interface ParsedPptxTextRun { content: string; bold?: boolean; italic?: boolean; fontSize?: number; color?: string; fontFamily?: string; underline?: boolean; href?: string; } export interface ParsedPptxParagraph { runs: ParsedPptxTextRun[]; alignment?: "left" | "center" | "right" | "justify"; bulletChar?: string; bulletColor?: string; bulletFontFamily?: string; bulletSize?: number; level?: number; marginLeftEmu?: number; indentEmu?: number; lineSpacing?: number; spaceBeforePt?: number; spaceAfterPt?: number; rtl?: boolean; } export interface ParsedPptxElement { id: string; name?: string; placeholderType?: string; kind: "text" | "image" | "shape" | "table"; x: number; y: number; width: number; height: number; rotation?: number; flipH?: boolean; flipV?: boolean; shapeType?: string; shapeAdjustments?: Record; geometry?: ParsedPptxGeometry; fill?: string; lineColor?: string; lineWidth?: number; lineHeadEnd?: ParsedPptxLineEnd; lineTailEnd?: ParsedPptxLineEnd; padding?: { left: number; right: number; top: number; bottom: number; }; verticalAlign?: "top" | "middle" | "bottom"; paragraphs?: ParsedPptxParagraph[]; image?: ParsedPptxImage; table?: ParsedPptxTable; } export interface ParsedPptxLineEnd { type: string; w?: string; len?: string; } export type ParsedPptxPathCommand = { kind: "moveTo" | "lnTo" | "quadBezTo" | "cubicBezTo"; points: { x: number; y: number; }[]; } | { kind: "arcTo"; wR: number; hR: number; stAng: number; swAng: number; } | { kind: "close"; }; export interface ParsedPptxPath { w: number; h: number; commands: ParsedPptxPathCommand[]; } export interface ParsedPptxGeometry { kind: "custom"; paths: ParsedPptxPath[]; } export interface ParsedPptxTable { rows: ParsedPptxTableCell[][]; columnWidthsEmu?: number[]; rowHeightsEmu?: number[]; } export interface ParsedPptxTableCell { paragraphs: ParsedPptxParagraph[]; colSpan?: number; rowSpan?: number; fill?: string; borders?: ParsedPptxTableCellBorders; } export interface ParsedPptxTableCellBorders { left?: ParsedPptxTableBorder; right?: ParsedPptxTableBorder; top?: ParsedPptxTableBorder; bottom?: ParsedPptxTableBorder; } export interface ParsedPptxTableBorder { color: string; widthEmu?: number; dash?: "dashed" | "dotted"; } export type ParsedPptxTransition = "instant" | "none" | "fade" | "slide" | "zoom"; export interface ParsedPptxImage { data: Uint8Array; mimeType: string; name: string; aspectRatio?: number; fullBleed?: boolean; crop?: { left: number; top: number; right: number; bottom: number; }; } export interface ParsedPptxSlide { texts: ParsedPptxTextRun[]; images: ParsedPptxImage[]; elements: ParsedPptxElement[]; widthEmu?: number; heightEmu?: number; backgroundColor?: string; backgroundGrid?: ParsedPptxGrid; notes?: string; layoutHint?: string; transition?: ParsedPptxTransition; splitByParagraph?: boolean; tablesDegraded?: number; } export interface ParsedPptxGrid { color: string; stepXEmu: number; stepYEmu: number; offsetXEmu: number; offsetYEmu: number; lineWidthEmu: number; } export interface ParsedPptxSlideMetadata { transition?: ParsedPptxTransition; splitByParagraph?: boolean; } export interface ParsedPptxPresentation { title: string; slides: ParsedPptxSlide[]; theme?: { colors: string[]; fonts: string[]; }; hiddenSlideCount?: number; } export interface PptxImageByteLimits { maxImageBytes: number; maxTotalImageBytes: number; } export declare const DEFAULT_PPTX_IMAGE_BYTE_LIMITS: Readonly; export declare class PptxImageByteLimitError extends Error { readonly limit: "per-image" | "aggregate"; readonly maxBytes: number; constructor(limit: "per-image" | "aggregate", maxBytes: number); } export declare function parsePptxPresentation(fileBuffer: Uint8Array, options?: { includeHiddenSlides?: boolean; imageByteLimits?: Readonly; }): Promise; export declare function parsePptxSlideMetadata(value: unknown): ParsedPptxSlideMetadata;