/** * Native module loader * * Handles loading the native addon, with fallback to mock implementation * for development/testing without native bindings. */ /** * Native addon interface - mirrors the Rust FFI exports */ export interface NativeAddon { getVersion(): string; createContext(): NativeContext; dropContext(ctx: NativeContext): void; openDocument(ctx: NativeContext, data: globalThis.Buffer, magic?: string): NativeDocument; openDocumentFromPath(ctx: NativeContext, path: string): NativeDocument; dropDocument(ctx: NativeContext, doc: NativeDocument): void; countPages(ctx: NativeContext, doc: NativeDocument): number; loadPage(ctx: NativeContext, doc: NativeDocument, pageNum: number): NativePage; dropPage(ctx: NativeContext, page: NativePage): void; boundPage(ctx: NativeContext, page: NativePage): NativeRect; getMetadata(ctx: NativeContext, doc: NativeDocument, key: string): string | null; setMetadata(ctx: NativeContext, doc: NativeDocument, key: string, value: string): void; saveDocument(ctx: NativeContext, doc: NativeDocument, path: string, options?: string): void; writeDocument(ctx: NativeContext, doc: NativeDocument): globalThis.Buffer; npMergePDFs(ctx: NativeContext, paths: string[], count: number, outputPath: string): number; renderPage(ctx: NativeContext, page: NativePage, matrix: NativeMatrix, colorspace: NativeColorspace, alpha: boolean): NativePixmap; renderPageToPNG(ctx: NativeContext, page: NativePage, dpi: number, colorspace: NativeColorspace): globalThis.Buffer; extractText(ctx: NativeContext, page: NativePage): string; extractTextBlocks(ctx: NativeContext, page: NativePage): Array<{ text: string; bbox: NativeRect; }>; searchText(ctx: NativeContext, page: NativePage, needle: string, caseSensitive: boolean): NativeRect[]; newSTextPage(ctx: NativeContext, page: NativePage): NativeSTextPage; dropSTextPage(ctx: NativeContext, stext: NativeSTextPage): void; getSTextAsText(ctx: NativeContext, stext: NativeSTextPage): string; searchSTextPage(ctx: NativeContext, stext: NativeSTextPage, needle: string, maxHits: number): Array<{ ul: { x: number; y: number; }; ur: { x: number; y: number; }; ll: { x: number; y: number; }; lr: { x: number; y: number; }; }>; getSTextPageBounds(ctx: NativeContext, stext: NativeSTextPage): NativeRect; getPageLinks(ctx: NativeContext, page: NativePage): Array<{ rect: NativeRect; uri?: string; page?: number; }>; needsPassword(ctx: NativeContext, doc: NativeDocument): boolean; authenticatePassword(ctx: NativeContext, doc: NativeDocument, password: string): boolean; hasPermission(ctx: NativeContext, doc: NativeDocument, permission: number): boolean; resolveLink(ctx: NativeContext, doc: NativeDocument, uri: string): number | null; loadFontFromMemory(ctx: NativeContext, data: globalThis.Buffer, index: number): NativeFont; loadFontFromFile(ctx: NativeContext, path: string, index: number): NativeFont; dropFont(ctx: NativeContext, font: NativeFont): void; getFontName(ctx: NativeContext, font: NativeFont): string; getFontBBox(ctx: NativeContext, font: NativeFont): NativeRect; loadImageFromMemory(ctx: NativeContext, data: globalThis.Buffer): NativeImage; loadImageFromFile(ctx: NativeContext, path: string): NativeImage; dropImage(ctx: NativeContext, image: NativeImage): void; getImageWidth(ctx: NativeContext, image: NativeImage): number; getImageHeight(ctx: NativeContext, image: NativeImage): number; getImageColorspace(ctx: NativeContext, image: NativeImage): NativeColorspace; getImagePixmap(ctx: NativeContext, image: NativeImage, subarea?: NativeRect): NativePixmap; scalePixmap(ctx: NativeContext, pixmap: NativePixmap, width: number, height: number): NativePixmap; openOutput(ctx: NativeContext, path: string): NativeOutput; dropOutput(ctx: NativeContext, output: NativeOutput): void; writeOutput(ctx: NativeContext, output: NativeOutput, data: globalThis.Buffer): void; tellOutput(ctx: NativeContext, output: NativeOutput): number; seekOutput(ctx: NativeContext, output: NativeOutput, offset: number, whence: number): void; openArchive(ctx: NativeContext, path: string): NativeArchive; openArchiveFromMemory(ctx: NativeContext, data: globalThis.Buffer): NativeArchive; dropArchive(ctx: NativeContext, archive: NativeArchive): void; countArchiveEntries(ctx: NativeContext, archive: NativeArchive): number; listArchiveEntry(ctx: NativeContext, archive: NativeArchive, index: number): string; hasArchiveEntry(ctx: NativeContext, archive: NativeArchive, name: string): boolean; readArchiveEntry(ctx: NativeContext, archive: NativeArchive, name: string): globalThis.Buffer; npAddBlankPage(ctx: NativeContext, doc: NativeDocument, width: number, height: number): number; npAddWatermark(ctx: NativeContext, doc: NativeDocument, text: string, fontSize: number, opacity: number): void; npDrawLine(ctx: NativeContext, page: NativePage, x0: number, y0: number, x1: number, y1: number, color: number[], alpha: number, lineWidth: number): void; npDrawRectangle(ctx: NativeContext, page: NativePage, x: number, y: number, width: number, height: number, color: number[], alpha: number, fill: boolean): void; npDrawCircle(ctx: NativeContext, page: NativePage, x: number, y: number, radius: number, color: number[], alpha: number, fill: boolean): void; npSplitPDF(ctx: NativeContext, inputPath: string, outputDir: string): string[]; npOptimizePDF(ctx: NativeContext, path: string): void; npLinearizePDF(ctx: NativeContext, inputPath: string, outputPath: string): void; Buffer: { new (capacity?: number): NativeBuffer; fromBuffer(data: globalThis.Buffer): NativeBuffer; fromString(str: string): NativeBuffer; }; createPoint(x: number, y: number): NativePoint; transformPoint(point: NativePoint, matrix: NativeMatrix): NativePoint; normalizeVector(point: NativePoint): NativePoint; createRect(x0: number, y0: number, x1: number, y1: number): NativeRect; rectEmpty(): NativeRect; rectInfinite(): NativeRect; rectUnit(): NativeRect; isRectEmpty(rect: NativeRect): boolean; isRectInfinite(rect: NativeRect): boolean; rectUnion(a: NativeRect, b: NativeRect): NativeRect; rectIntersect(a: NativeRect, b: NativeRect): NativeRect; rectContains(a: NativeRect, b: NativeRect): boolean; transformRect(rect: NativeRect, matrix: NativeMatrix): NativeRect; createIRect(x0: number, y0: number, x1: number, y1: number): NativeIRect; iRectFromRect(rect: NativeRect): NativeIRect; rectFromIRect(irect: NativeIRect): NativeRect; isIRectEmpty(irect: NativeIRect): boolean; iRectUnion(a: NativeIRect, b: NativeIRect): NativeIRect; iRectIntersect(a: NativeIRect, b: NativeIRect): NativeIRect; matrixIdentity(): NativeMatrix; matrixTranslate(tx: number, ty: number): NativeMatrix; matrixScale(sx: number, sy: number): NativeMatrix; matrixRotate(degrees: number): NativeMatrix; matrixShear(sx: number, sy: number): NativeMatrix; matrixConcat(a: NativeMatrix, b: NativeMatrix): NativeMatrix; matrixInvert(m: NativeMatrix): NativeMatrix | null; isMatrixIdentity(m: NativeMatrix): boolean; isMatrixRectilinear(m: NativeMatrix): boolean; createQuadFromRect(rect: NativeRect): NativeQuad; rectFromQuad(quad: NativeQuad): NativeRect; transformQuad(quad: NativeQuad, matrix: NativeMatrix): NativeQuad; isPointInsideQuad(point: NativePoint, quad: NativeQuad): boolean; deviceGray(): NativeColorspace; deviceRGB(): NativeColorspace; deviceBGR(): NativeColorspace; deviceCMYK(): NativeColorspace; deviceLab(): NativeColorspace; colorspaceN(cs: NativeColorspace): number; colorspaceName(cs: NativeColorspace): string; convertColor(srcCs: NativeColorspace, srcValues: number[], dstCs: NativeColorspace): number[]; createPixmap(colorspace: NativeColorspace | null, width: number, height: number, alpha: boolean): NativePixmap; pixmapWidth(pm: NativePixmap): number; pixmapHeight(pm: NativePixmap): number; pixmapN(pm: NativePixmap): number; pixmapAlpha(pm: NativePixmap): boolean; pixmapStride(pm: NativePixmap): number; pixmapSamples(pm: NativePixmap): Uint8Array; clearPixmap(pm: NativePixmap): void; clearPixmapWithValue(pm: NativePixmap, value: number): void; invertPixmap(pm: NativePixmap): void; gammaPixmap(pm: NativePixmap, gamma: number): void; } export interface NativeBuffer { length(): number; getData(): globalThis.Buffer; append(data: globalThis.Buffer | Uint8Array): this; appendByte(byte: number): this; appendString(str: string): this; appendInt16LE(value: number): this; appendInt32LE(value: number): this; appendInt16BE(value: number): this; appendInt32BE(value: number): this; clear(): this; resize(size: number): this; slice(start: number, end?: number): NativeBuffer; toBuffer(): globalThis.Buffer; md5Digest(): Uint8Array; } export interface NativeContext { _handle: number; } export interface NativeDocument { _handle: number; } export interface NativePage { _handle: number; } export interface NativeFont { _handle: number; } export interface NativeImage { _handle: number; } export interface NativeOutput { _handle: number; } export interface NativeArchive { _handle: number; } export interface NativeSTextPage { _handle: number; } export interface NativePoint { x: number; y: number; } export interface NativeRect { x0: number; y0: number; x1: number; y1: number; } export interface NativeIRect { x0: number; y0: number; x1: number; y1: number; } export interface NativeMatrix { a: number; b: number; c: number; d: number; e: number; f: number; } export interface NativeQuad { ul: NativePoint; ur: NativePoint; ll: NativePoint; lr: NativePoint; } export interface NativeColorspace { name: string; n: number; type: string; } export interface NativePixmap { width: number; height: number; n: number; alpha: boolean; stride: number; samples: Uint8Array; } declare let addon: NativeAddon; export declare const native_addon: NativeAddon; export declare const isMock: boolean; export { addon as native }; //# sourceMappingURL=native.d.ts.map