import { IDesignItem } from "../../item/IDesignItem.js"; import { IPngCreatorService } from "./IPngCreatorService.js"; /** * PNG writer service for Electron that uses BrowserWindow.capturePage() * instead of getDisplayMedia(). No recording rect is shown and no user * permission prompt is needed. * * The constructor accepts a capturePageFn callback that should invoke * BrowserWindow.capturePage() (via IPC from the renderer) and return * a data-URL of the captured image. * * Example usage from an Electron renderer process: * * const { ipcRenderer } = require('electron'); * * const capturePageFn = async (rect) => { * // main process calls: mainWindow.webContents.capturePage(rect) * return await ipcRenderer.invoke('capture-page', rect); * }; * * serviceContainer.register('pngCreatorService', * new ElectronPngWriterService(capturePageFn)); */ export declare class ElectronPngWriterService implements IPngCreatorService { private _capturePageFn; /** * @param capturePageFn A function that captures a portion of the current * BrowserWindow and returns a data-URL (e.g. "data:image/png;base64,…"). * The rect is in CSS pixels relative to the page (matching Electron's * capturePage rectangle). */ constructor(capturePageFn: (rect: { x: number; y: number; width: number; height: number; }) => Promise); takePng(designItems: IDesignItem[], options?: { margin?: number; removeSelection?: boolean; }): Promise; private _loadImage; }