import { P as Plugin, O as Options, M as MeasureResult, R as RenderOptions, T as Text } from './shared/modern-text.DRiaDpRv.cjs';
export { C as Canvas2DRenderer, a as Character, D as DrawShapePathsOptions, F as Fragment, f as MeasureDomResult, e as MeasuredCharacter, d as MeasuredFragment, c as MeasuredParagraph, g as Measurer, b as Paragraph, h as TextEvents, t as textDefaultStyle } from './shared/modern-text.DRiaDpRv.cjs';
import { NormalizedStyle, NormalizedHighlight } from 'modern-idoc';
import { Matrix3, Path2DSet } from 'modern-path2d';
import 'modern-font';

declare function definePlugin(options: Plugin): Plugin;

declare function measureText(options: Options, load: true): Promise<MeasureResult>;
declare function measureText(options: Options): MeasureResult;

type RenderTextOptions = Options & RenderOptions;
declare function renderText(options: RenderTextOptions, load: true): Promise<void>;
declare function renderText(options: RenderTextOptions): void;

declare function backgroundPlugin(): Plugin;

declare function getHighlightStyle(style: NormalizedStyle): NormalizedHighlight;
declare function highlightPlugin(): Plugin;

declare function listStylePlugin(): Plugin;

declare function outlinePlugin(): Plugin;

declare function renderPlugin(): Plugin;
declare function getTransform2D(text: Text, style: NormalizedStyle): Matrix3;

declare function textDecorationPlugin(): Plugin;

interface SvgLoader {
    loaded: Map<string, string>;
    needsLoad: (source: string) => boolean;
    load: (svg: string) => Promise<void>;
}
declare function createSvgLoader(): SvgLoader;

interface SvgParser {
    parsed: Map<string, {
        dom: SVGElement;
        pathSet: Path2DSet;
    }>;
    parse: (svg: string) => {
        dom: SVGElement;
        pathSet: Path2DSet;
    };
}
declare function createSvgParser(loader: SvgLoader): SvgParser;

interface ValueContext {
    total: number;
    fontSize: number;
}
declare function parseValueNumber(value: string | number, ctx: ValueContext): number;
declare function parseColormap(colormap: 'none' | Record<string, string>): Record<string, string>;
declare function isEqualObject(obj1: Record<string, any>, obj2: Record<string, any>): boolean;
declare function isEqualValue(val1: any, val2: any): boolean;
declare function hexToRgb(hex: string): string | null;
declare function filterEmpty(val: Record<string, any> | undefined): Record<string, any> | undefined;

export { MeasureResult, Options, Plugin, RenderOptions, Text, backgroundPlugin, createSvgLoader, createSvgParser, definePlugin, filterEmpty, getHighlightStyle, getTransform2D, hexToRgb, highlightPlugin, isEqualObject, isEqualValue, listStylePlugin, measureText, outlinePlugin, parseColormap, parseValueNumber, renderPlugin, renderText, textDecorationPlugin };
export type { RenderTextOptions, SvgLoader, SvgParser };
