import { IRenderer } from './IRenderer'; export interface SVGLinearGradient { type: 'linear'; id?: string; x0: number; y0: number; x1: number; y1: number; colorStops: { stop: number; color: string; }[]; createMatrix: number[]; } export declare class SVGRenderer implements IRenderer { /** Backend discriminator; see {@link IRenderer.kind}. */ readonly kind = "svg"; private width; private height; private buffer; private defsBuffer; private currentPath; private mStack; private ma; private mb; private mc; private md; private me; private mf; private alphaStack; private globalAlpha; private clipDepthStack; private clipDepth; private clipCounter; private batchCircles; private batchMatrix; private batchColor; private batchAlpha; private batchActive; private gradientCounter; private gradientCache; constructor(width: number, height: number); clear(): void; save(): void; restore(): void; translate(dx: number, dy: number): void; scale(sx: number, sy: number): void; rotate(angle: number): void; setGlobalAlpha(alpha: number): void; beginPath(): void; moveTo(x: number, y: number): void; lineTo(x: number, y: number): void; bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; closePath(): void; arc(x: number, y: number, r: number, startAngle: number, endAngle: number, ccw?: boolean): void; roundRect(x: number, y: number, w: number, h: number, radii: number | number[]): void; fill(colorOrGradient: string | SVGLinearGradient): void; stroke(colorOrGradient: string | SVGLinearGradient, lineWidth?: number): void; fillText(text: string, x: number, y: number, font: string, color: string | SVGLinearGradient): void; fillCircle(cx: number, cy: number, radius: number, color: string, alpha?: number): void; drawImage(source: any, dx: number, dy: number, dw: number, dh: number): void; /** * Embed SVG markup as an isolated nested image. * * This explicit path is used by `SVGEntity` during vector export. General * `drawImage()` input remains subject to the URL policy and therefore still * rejects caller-provided SVG data URLs. */ drawSVG(source: string, dx: number, dy: number, dw: number, dh: number): void; flush(): void; createLinearGradient(x0: number, y0: number, x1: number, y1: number, colorStops: { stop: number; color: string; }[]): SVGLinearGradient; clip(x: number, y: number, width: number, height: number, radii?: number | number[]): void; toXMLString(): string; private resolveGradient; private escapeXML; private isSafeRasterDataUrl; /** * SVGRenderer accumulates strings in memory; nothing external is allocated. * Drop the buffers for GC and become idempotent. */ dispose(): void; }