import { Adapter, CdaStructuredTextValue, Document, Mark, MetaEntry, Node, NodeWithMeta, Record, RenderContext, RenderError, RenderResult, RenderRule, renderRule, Span, TrasformFn } from 'datocms-structured-text-utils';
export { RenderError, renderRule as renderNodeRule };
export declare function markToTagName(mark: Mark): string;
export declare function renderSpanValue<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn>({ node, key, adapter: { renderNode, renderText, renderFragment }, }: RenderContext<H, T, F, Span>): RenderResult<H, T, F>;
type RenderMarkContext<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn> = {
    mark: string;
    adapter: Adapter<H, T, F>;
    key: string;
    children: Exclude<RenderResult<H, T, F>, null | undefined>[] | undefined;
};
export type RenderMarkRule<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn> = {
    appliable: (mark: string) => boolean;
    apply: (ctx: RenderMarkContext<H, T, F>) => RenderResult<H, T, F>;
};
export declare function renderMarkRule<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn>(guard: string | ((mark: string) => boolean), transform: (ctx: RenderMarkContext<H, T, F>) => RenderResult<H, T, F>): RenderMarkRule<H, T, F>;
export declare function spanNodeRenderRule<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn>({ customMarkRules, }: {
    customMarkRules: RenderMarkRule<H, T, F>[];
}): RenderRule<H, T, F>;
export type TransformMetaContext = {
    node: NodeWithMeta;
    meta: Array<MetaEntry>;
};
export type TransformedMeta = {
    [prop: string]: unknown;
} | null | undefined;
export type TransformMetaFn = (context: TransformMetaContext) => TransformedMeta;
export declare const defaultMetaTransformer: TransformMetaFn;
export type RenderOptions<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn> = {
    adapter: Adapter<H, T, F>;
    customNodeRules?: RenderRule<H, T, F>[];
    metaTransformer?: TransformMetaFn;
    customMarkRules?: RenderMarkRule<H, T, F>[];
};
export declare function render<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn, BlockRecord extends Record, LinkRecord extends Record, InlineBlockRecord extends Record>(structuredTextOrNode: CdaStructuredTextValue<BlockRecord, LinkRecord, InlineBlockRecord> | Document | Node | null | undefined, options: RenderOptions<H, T, F>): RenderResult<H, T, F>;
