import type { Canvas, CanvasOptions, FinalizedSvg } from "../../widgets/utils/layout"; import type { Path2D } from "../../widgets/utils/path-builder"; export declare function resetCanvasIdCounter(): void; export declare class CanvasImpl implements Canvas { readonly clipId: string; private extents; private svgBody; private defs; private readonly options; private nextLocalClipId; constructor(options: CanvasOptions); getSvgBody(): string; drawInClippedRegion(renderFn: (clippedCanvas: Canvas) => void): void; drawText(opts: { x: number; y: number; text: string; anchor?: "start" | "middle" | "end"; dominantBaseline?: "hanging" | "middle" | "baseline"; fontPx?: number; fontWeight?: "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"; paintOrder?: "stroke fill"; stroke?: string; strokeWidth?: number | string; fill?: string; opacity?: number; strokeOpacity?: number; fillOpacity?: number; transform?: string; rotate?: { angle: number; cx: number; cy: number; }; maxWidth?: number; lineHeight?: number; }): void; drawWrappedText(opts: { x: number; y: number; text: string; className?: string; maxWidthPx: number; anchor?: "start" | "middle" | "end"; fontPx?: number; lineHeight?: number; fontWeight?: "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900"; paintOrder?: "stroke fill"; stroke?: string; strokeWidth?: number | string; fill?: string; opacity?: number; strokeOpacity?: number; fillOpacity?: number; transform?: string; rotate?: { angle: number; cx: number; cy: number; }; dominantBaseline?: "auto" | "alphabetic" | "hanging" | "ideographic" | "mathematical" | "middle"; }): void; drawLine(x1: number, y1: number, x2: number, y2: number, style: { stroke: string; strokeWidth: number; dash?: string; strokeLinecap?: "butt" | "round" | "square"; strokeLinejoin?: "miter" | "round" | "bevel"; strokeMiterlimit?: number; markerStart?: string; markerMid?: string; markerEnd?: string; opacity?: number; strokeOpacity?: number; transform?: string; }): void; drawCircle(cx: number, cy: number, r: number, style: { fill?: string; stroke?: string; strokeWidth?: number; dash?: string; fillPatternId?: string; opacity?: number; fillOpacity?: number; strokeOpacity?: number; transform?: string; }): void; drawRect(x: number, y: number, w: number, h: number, style: { fill?: string; stroke?: string; strokeWidth?: number; dash?: string; fillPatternId?: string; opacity?: number; fillOpacity?: number; strokeOpacity?: number; transform?: string; }): void; drawEllipse(cx: number, cy: number, rx: number, ry: number, style: { fill?: string; stroke?: string; strokeWidth?: number; dash?: string; fillPatternId?: string; opacity?: number; fillOpacity?: number; strokeOpacity?: number; transform?: string; }): void; drawPath(path: Path2D, style: { fill?: string; stroke?: string; strokeWidth?: number; dash?: string; strokeLinecap?: "butt" | "round" | "square"; strokeLinejoin?: "miter" | "round" | "bevel"; strokeMiterlimit?: number; fillRule?: "nonzero" | "evenodd"; markerStart?: string; markerMid?: string; markerEnd?: string; opacity?: number; fillOpacity?: number; strokeOpacity?: number; transform?: string; }): void; drawPolygon(points: Array<{ x: number; y: number; }>, style: { fill?: string; stroke?: string; strokeWidth?: number; dash?: string; fillRule?: "nonzero" | "evenodd"; strokeLinejoin?: "miter" | "round" | "bevel"; strokeMiterlimit?: number; opacity?: number; fillOpacity?: number; strokeOpacity?: number; transform?: string; }): void; drawPolyline(points: Array<{ x: number; y: number; }>, style: { stroke: string; strokeWidth: number; dash?: string; strokeLinecap?: "butt" | "round" | "square"; strokeLinejoin?: "miter" | "round" | "bevel"; strokeMiterlimit?: number; opacity?: number; strokeOpacity?: number; transform?: string; }): void; drawForeignObject(opts: { x: number; y: number; width: number; height: number; content: string; transform?: string; }): void; drawImage(opts: { x: number; y: number; width: number; height: number; href: string; preserveAspectRatio?: string; opacity?: number; transform?: string; }): void; drawLegendBlock(opts: { startX: number; startY: number; rows: Array<{ sample: { stroke: string; strokeWidth: number; dash?: string; marker?: "circle" | "square"; }; label: string; }>; rowGapPx: number; labelFontPx?: number; sampleLengthPx?: number; }): void; addDef(def: string): void; addStyle(cssRules: string): void; withTransform(transform: string, renderFn: () => void): void; addHatchPattern(opts: { id: string; color: string; strokeWidth: number; spacing?: number; angleDeg?: number; }): void; addLinearGradient(opts: { id: string; stops: Array<{ offset: string; color: string; }>; x1?: string; y1?: string; x2?: string; y2?: string; gradientUnits?: "objectBoundingBox" | "userSpaceOnUse"; }): void; addRadialGradient(opts: { id: string; stops: Array<{ offset: string; color: string; }>; cx?: string; cy?: string; r?: string; fx?: string; fy?: string; gradientUnits?: "objectBoundingBox" | "userSpaceOnUse"; }): void; finalize(padPx: number): FinalizedSvg; private wrapText; private escapeHtml; private estimateTextWidth; private updateExtents; } //# sourceMappingURL=canvas-impl.d.ts.map