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<string>);
    takePng(designItems: IDesignItem[], options?: {
        margin?: number;
        removeSelection?: boolean;
    }): Promise<Uint8Array>;
    private _loadImage;
}
