import { SatoriOptions } from 'satori';
import { UIElement, Spec } from '@json-render/core';
import { ReactNode, ComponentType } from 'react';
interface ComponentRenderProps
> {
element: UIElement;
children?: ReactNode;
emit: (event: string) => void;
}
type ComponentRenderer> = ComponentType>;
type ComponentRegistry = Record>;
declare const standardComponents: ComponentRegistry;
interface RenderOptions {
registry?: ComponentRegistry;
includeStandard?: boolean;
state?: Record;
fonts?: SatoriOptions["fonts"];
/** Override the Frame width. When omitted, uses the Frame component's width prop. */
width?: number;
/** Override the Frame height. When omitted, uses the Frame component's height prop. */
height?: number;
}
/**
* Render a json-render spec to an SVG string.
*
* Uses Satori to convert the spec's component tree into SVG.
* No additional dependencies are needed beyond satori.
*/
declare function renderToSvg(spec: Spec, options?: RenderOptions): Promise;
/**
* Render a json-render spec to a PNG buffer.
*
* Requires `@resvg/resvg-js` to be installed as a peer dependency.
* The SVG is first generated via Satori, then rasterized to PNG.
*/
declare function renderToPng(spec: Spec, options?: RenderOptions): Promise;
export { type ComponentRenderProps as C, type RenderOptions as R, type ComponentRenderer as a, type ComponentRegistry as b, renderToPng as c, renderToSvg as r, standardComponents as s };