import type { BrowserWindow, IpcMain, IpcRenderer } from 'electron';
import type { BaseInteraction, TransportOptions } from '../interface';
import { Transport } from '../transport';
interface ElectronTransportOptions extends Partial<TransportOptions> {
    /**
     * Specify a Electron channel name.
     */
    channel?: string;
}
export interface ElectronMainTransportOptions extends ElectronTransportOptions {
    /**
     * Specify a browser windows created by the Electron main process.
     */
    browserWindow: BrowserWindow;
    /**
     * Communicate asynchronously from the main process to renderer processes.
     */
    ipcMain: IpcMain;
}
export interface ElectronRendererTransportOptions extends ElectronTransportOptions {
    /**
     * Communicate asynchronously from a renderer process to the main process.
     */
    ipcRenderer: IpcRenderer;
}
export declare abstract class ElectronMainTransport<T extends BaseInteraction = any> extends Transport<T> {
    constructor(_options: ElectronMainTransportOptions);
}
export declare abstract class ElectronRendererTransport<T extends BaseInteraction = any> extends Transport<T> {
    constructor(_options: ElectronRendererTransportOptions);
}
export declare const ElectronTransport: {
    Main: typeof ElectronMainTransport;
    Renderer: typeof ElectronRendererTransport;
};
export {};
//# sourceMappingURL=electronTransport.d.ts.map