import { Readable } from 'node:stream';
import { Plugin } from 'vite';

interface Options {
    /**
     * Selector for the element to capture as the Open Graph image.
     * @example "#og-image"
     */
    elementSelector: string;
    /**
     * Relative path to the directory to store generated images.
     * Relative to the client build assets (e.g. `/build/client`).
     */
    outputDirectory: string;
    /**
     * Format of the generated image.
     * @default "jpeg"
     */
    format?: 'jpeg' | 'png' | 'webp';
    writeImage?: (image: {
        stream: Readable;
    }) => Promise<void>;
    browser?: {
        executablePath?: string;
        /**
         * Custom media features.
         * Use this to force media features like `prefers-color-scheme`
         * or `prefers-reduced-motion`.
         *
         * @example
         * mediaFeatures: {
         *   'prefers-color-scheme': 'dark',
         * }
         */
        mediaFeatures?: Record<string, string>;
    };
}
declare function openGraphImage(options: Options): Plugin;

export { openGraphImage };
