export interface PDFElementObject { id?: string; x: number; y: number; width: number; height: number; type?: string; label?: string; icon?: string; resizable?: boolean; [key: string]: unknown; } export type PDFElementsAddingEndedReason = 'placed' | 'cancelled'; export interface PDFElementsAddingEndedPlacedPayload { reason: 'placed'; object: PDFElementObject; docIndex: number; pageIndex: number; } export interface PDFElementsAddingEndedCancelledPayload { reason: 'cancelled'; } export type PDFElementsAddingEndedPayload = PDFElementsAddingEndedPlacedPayload | PDFElementsAddingEndedCancelledPayload; export interface PDFDocumentEntry { name: string; file: unknown; pdfDoc: unknown; numPages: number; pages: Promise[]; pageWidths: number[]; pagesScale: number[]; allObjects: PDFElementObject[][]; } export interface PDFElementsPublicApi { startAddingElement: (templateObject: PDFElementObject) => void; addObjectToPage: (object: PDFElementObject, pageIndex?: number, docIndex?: number) => boolean; getAllObjects: (docIndex?: number) => PDFElementObject[]; updateObject: (docIndex: number, objectId: string, payload: Partial) => void; deleteObject: (docIndex: number, objectId: string) => void; duplicateObject: (docIndex: number, objectId: string) => void; cancelAdding: () => void; }