@svgsketch/core 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -306,6 +306,38 @@ interface SerializedAnimationTimeline {
306
306
  * import time.
307
307
  */
308
308
  transformBaseValue?: string;
309
+ /**
310
+ * For `property === 'domAttribute'` tracks: the SVG attribute name
311
+ * to write on the target element each frame (`cx`, `cy`, `r`, `x`,
312
+ * `y`, `width`, `height`, `opacity`, `fill-opacity`, `fill`,
313
+ * `stroke`, `d`, etc.). Generic carrier for `<animate>` / `<set>`
314
+ * inside `<clipPath>` / `<mask>` defs that the editor doesn't
315
+ * decompose into per-attribute first-class tracks. Set jointly with
316
+ * `domAttributeValueType` so the manager knows how to interpolate
317
+ * the raw keyframe values.
318
+ * @see SVG Animations §3.5
319
+ */
320
+ domAttribute?: string;
321
+ /**
322
+ * For `property === 'domAttribute'` tracks: how to interpolate the
323
+ * keyframe values. `'number'` → numeric tween; `'color'` → RGB
324
+ * channel tween via the existing color interp; `'string'` →
325
+ * discrete (no interpolation, holds each keyframe until the next).
326
+ * Determined at import time from the source `<animate>`'s
327
+ * `attributeName` (geometry → number, paint → color, others →
328
+ * string). `<set>` always produces `'string'` regardless of attr.
329
+ */
330
+ domAttributeValueType?: 'number' | 'color' | 'string';
331
+ /**
332
+ * SMIL `calcMode` (SVG Animations §2.10) — controls interpolation
333
+ * between keyframes. Persisted because it changes how the SMIL
334
+ * exporter materializes the track: `'discrete'` round-trips a
335
+ * single-keyframe track as `<set>` and a multi-keyframe track as one
336
+ * `<set>` per keyframe, while the absent/`'linear'` form emits a
337
+ * single `<animate values="…">`. Without this field, set-semantics
338
+ * tracks degrade to interpolated `<animate>` after save/reload.
339
+ */
340
+ calcMode?: 'linear' | 'discrete' | 'paced' | 'spline';
309
341
  keyframes: {
310
342
  time: number;
311
343
  value: number | string;
@@ -437,6 +469,15 @@ interface LinearGradient {
437
469
  * element's bbox-normalised [0, 1] space. See `GradientUnits`.
438
470
  */
439
471
  gradientUnits?: GradientUnits;
472
+ /**
473
+ * SVG 2 §13.9 `color-interpolation` — color space for stop
474
+ * interpolation. Spec applies the property to gradient elements;
475
+ * `linearRGB` produces physically-linear blends, `sRGB` (the spec
476
+ * initial value) produces the perceptual blends most authors expect.
477
+ * Round-trip the attribute when authored so re-export does not
478
+ * silently shift mid-tone colors.
479
+ */
480
+ colorInterpolation?: 'auto' | 'sRGB' | 'linearRGB';
440
481
  /**
441
482
  * Original `id` from the imported source SVG. Runtime `id` is always
442
483
  * a fresh GUID (to keep editor uniqueness invariants), but `sourceId`
@@ -472,6 +513,8 @@ interface RadialGradient {
472
513
  * `r`/`ry` are in document user space. See `GradientUnits`.
473
514
  */
474
515
  gradientUnits?: GradientUnits;
516
+ /** See `LinearGradient.colorInterpolation`. */
517
+ colorInterpolation?: 'auto' | 'sRGB' | 'linearRGB';
475
518
  /** See `LinearGradient.sourceId`. */
476
519
  sourceId?: string;
477
520
  }
@@ -1162,6 +1205,50 @@ interface ShapeMetadata {
1162
1205
  role: AriaRole;
1163
1206
  ariaLabel: string;
1164
1207
  customData: Record<string, string>;
1208
+ /**
1209
+ * Generic ARIA attribute bag — every `aria-*` attribute *except*
1210
+ * `aria-label` (which has its own dedicated field for the metadata
1211
+ * panel's back-compat path). Keys are the full attribute name, e.g.
1212
+ * `'aria-labelledby'`, `'aria-describedby'`, `'aria-hidden'`.
1213
+ *
1214
+ * Spec: SVG 2 §5.12.3 — "All aria- attributes" are valid on every SVG
1215
+ * element. Stored verbatim so the full WAI-ARIA surface round-trips.
1216
+ */
1217
+ aria?: Record<string, string>;
1218
+ /**
1219
+ * Per-element `lang` / `xml:lang` value (SVG 2 §5.11.3). Authored
1220
+ * `xml:lang` is preferred but `lang` is accepted as a fallback. Emit
1221
+ * as `xml:lang` per spec recommendation.
1222
+ */
1223
+ lang?: string;
1224
+ /**
1225
+ * Per-element `tabindex` (SVG 2 §5.11.5). Stored as integer. Negative
1226
+ * values are valid (focusable but not in the default tab order).
1227
+ */
1228
+ tabindex?: number;
1229
+ /** Per-element `autofocus` (SVG 2 §5.11.6). Boolean attribute. */
1230
+ autofocus?: boolean;
1231
+ /**
1232
+ * Per-element `xml:space` value (SVG 2 §5.11.4) for non-text shapes.
1233
+ * Text-bearing shapes (`Text`) own their own `xml:space` lifecycle
1234
+ * via the rich-text serializer.
1235
+ */
1236
+ xmlSpace?: 'default' | 'preserve';
1237
+ /**
1238
+ * Foreign-namespaced or prefixed attributes preserved verbatim for
1239
+ * round-trip (SVG 2 §5.10 — "elements and attributes from foreign
1240
+ * namespaces ... must be ignored for rendering ... [but] preserved
1241
+ * when the SVG document is loaded and saved"). Covers `inkscape:`,
1242
+ * `sodipodi:`, `serif:`, `figma:`, and any other authoring-tool
1243
+ * markers, plus arbitrary user-defined namespaces. Stored as a list
1244
+ * (rather than a record) to preserve ordering and to permit multiple
1245
+ * attributes with the same local name across different namespaces.
1246
+ */
1247
+ foreignAttrs?: Array<{
1248
+ name: string;
1249
+ namespaceURI: string | null;
1250
+ value: string;
1251
+ }>;
1165
1252
  /**
1166
1253
  * Hyperlink target — when set, the shape is rendered inside an SVG `<a>`
1167
1254
  * element with `href="${linkUrl}"`. Round-trips through SVG import/export.
@@ -1254,6 +1341,19 @@ interface DocumentMetadata {
1254
1341
  * `ShapeMetadata.rawDescription`; see there for the emit rule.
1255
1342
  */
1256
1343
  rawDescription?: string;
1344
+ /**
1345
+ * Lossless carrier for HTML metadata elements (`<link>`, `<meta>`)
1346
+ * that appeared as direct children of the root `<svg>`. Stored as a
1347
+ * serialized string of one or more elements in document order.
1348
+ *
1349
+ * Spec: SVG 2 §5.9 — "The HTML elements `meta`, `link` and `style`
1350
+ * may appear inside the `svg` element". `<style>` is consumed by
1351
+ * the CSS parser; `<link>` (often used for external stylesheets)
1352
+ * and `<meta>` (charset, viewport hints, OpenGraph) round-trip
1353
+ * verbatim through this field so downstream tooling that produced
1354
+ * them sees its data preserved.
1355
+ */
1356
+ rawHtmlMetadata?: string;
1257
1357
  /**
1258
1358
  * Decimal precision for coordinate values when the document is
1259
1359
  * serialized — file save, cloud sync, undo capture, and SVG export.
@@ -1354,17 +1454,13 @@ type TemplateVariableType = 'string' | 'color' | 'number';
1354
1454
  */
1355
1455
  type TemplateVariableMode = 'live' | 'stamped';
1356
1456
  /**
1357
- * Where a TemplateVariable came from. `user` is hand-authored in the
1358
- * Variables panel; `palette` is auto-generated by the palette-token
1359
- * integration and is read-mostly (the source of truth lives in user
1360
- * settings, not the document).
1457
+ * Where a TemplateVariable came from. Currently only `user` (hand-authored
1458
+ * in the Document Tokens panel or harvested from imported `:root { --foo
1459
+ * }` blocks). Retained as a tagged union so additional sources (e.g.
1460
+ * external design-token imports) can be added without breaking callers.
1361
1461
  */
1362
1462
  type TemplateVariableSource = {
1363
1463
  kind: 'user';
1364
- } | {
1365
- kind: 'palette';
1366
- paletteId: string;
1367
- index: number;
1368
1464
  };
1369
1465
  /**
1370
1466
  * A template variable definition stored in the document.
@@ -1796,7 +1892,40 @@ interface SerializedShape {
1796
1892
  opacity?: number;
1797
1893
  blendMode?: string;
1798
1894
  shapeRendering?: 'auto' | 'optimizeSpeed' | 'crispEdges' | 'geometricPrecision';
1895
+ textRendering?: 'auto' | 'optimizeSpeed' | 'optimizeLegibility' | 'geometricPrecision';
1896
+ imageRendering?: 'auto' | 'optimizeSpeed' | 'optimizeQuality' | 'crisp-edges' | 'pixelated' | 'smooth' | 'high-quality';
1897
+ colorRendering?: 'auto' | 'optimizeSpeed' | 'optimizeQuality';
1898
+ /**
1899
+ * SVG `color-interpolation` (SVG 2 §13.9). Selects the color space —
1900
+ * sRGB or linearized RGB — used for *non-filter* color operations:
1901
+ * gradient-stop interpolation, SMIL color animation interpolation,
1902
+ * and the compositing/blending of graphics elements. The
1903
+ * filter-pipeline analogue is `color-interpolation-filters`
1904
+ * (carried separately on filter chains as `filterColorInterpolation`).
1905
+ * Spec initial value: `sRGB`. Authors who pick `linearRGB` get
1906
+ * physically-linear stop interpolation; missing this attribute on
1907
+ * round-trip silently shifts mid-tone gradient colors.
1908
+ */
1909
+ colorInterpolation?: 'auto' | 'sRGB' | 'linearRGB';
1910
+ /**
1911
+ * SVG `display` presentation attribute as authored on the source
1912
+ * element. Distinct from `visible` (editor's layer-hide boolean,
1913
+ * which writes inline `style="display:none"`): `display: 'none'`
1914
+ * here carries the author's intent through round-trip as an XML
1915
+ * attribute (`<rect display="none"/>`), preserving SVG 2 §3.2.2
1916
+ * semantics that `display:none` removes the element from the
1917
+ * rendering tree.
1918
+ */
1919
+ display?: 'none';
1799
1920
  metadata?: Partial<ShapeMetadata>;
1921
+ /**
1922
+ * Shape-scoped `<script>` elements (SVG 2 §15.9 allows scripts as
1923
+ * descendants of any container). Emitted as children of the shape's
1924
+ * exported element on save; preserved verbatim through .svgs round-trip,
1925
+ * undo/redo, copy/paste. Distinct from `HistorySnapshot.documentScripts`
1926
+ * which sits at the SVG root and runs in document order.
1927
+ */
1928
+ scripts?: DocumentScript[];
1800
1929
  groupId?: string;
1801
1930
  cssClipPath?: string;
1802
1931
  cssMaskProperties?: Record<string, string>;
@@ -1842,6 +1971,26 @@ interface SerializedShape {
1842
1971
  * Only meaningful on `symbol-instance` shapes.
1843
1972
  */
1844
1973
  instancePresentation?: Record<string, string>;
1974
+ /**
1975
+ * Inline children for container shape types (`hyperlink`, `switch`,
1976
+ * `container`, embedded `svg`). Each child is a self-contained
1977
+ * `SerializedShape` rendered nested inside the parent's element.
1978
+ *
1979
+ * Groups (`type === 'group'`) do NOT use this field — they store
1980
+ * children flat in `HistorySnapshot.shapes[]` and back-reference the
1981
+ * parent group via `state.groupId`. The two pickup paths exist
1982
+ * because groups predate the inline-children container model.
1983
+ */
1984
+ children?: SerializedShape[];
1985
+ /** Legacy `xlink:href`, preserved alongside `href` for round-trip. */
1986
+ hrefXlink?: string;
1987
+ linkTarget?: '_self' | '_blank' | '_parent' | '_top' | string;
1988
+ linkRel?: string;
1989
+ linkDownload?: string;
1990
+ linkPing?: string;
1991
+ linkHreflang?: string;
1992
+ linkType?: string;
1993
+ linkReferrerPolicy?: string;
1845
1994
  /**
1846
1995
  * Id of the canvas shape this `shape-reference` (Linked Copy) targets.
1847
1996
  * A Linked Copy renders as a live clone of another top-level shape and
@@ -2023,6 +2172,55 @@ interface HistorySnapshot {
2023
2172
  symbols?: SerializedSymbolDef[];
2024
2173
  /** @deprecated v2 — use `library`. Read-only: v1 docs migrate into `library`. */
2025
2174
  markers?: SerializedMarkerDef[];
2175
+ /**
2176
+ * Color glyph library — Phase 3 of the OT-SVG / COLR foundry. Authored
2177
+ * color glyphs (each a small SVG document plus codepoint mapping) ride
2178
+ * with the document so they survive local save/load and cloud sync.
2179
+ * The base font that the foundry overlays onto is intentionally NOT
2180
+ * stored here — it's a per-browser tool choice (kept in IndexedDB),
2181
+ * not document state. Only the colour-glyph artwork itself rides.
2182
+ *
2183
+ * Optional: documents that never opened the foundry have no entry,
2184
+ * and the field is omitted on serialisation when the library is empty.
2185
+ */
2186
+ colorGlyphLibrary?: SerializedColorGlyphLibrary;
2187
+ }
2188
+ /**
2189
+ * Wire format for the color glyph library. Mirrors the in-editor
2190
+ * `GlyphLibrary` exactly, but typed in core so plugins / CLI tooling /
2191
+ * any future export pipeline can consume it without depending on the
2192
+ * editor app.
2193
+ *
2194
+ * Versioned because the entry shape may evolve (e.g. when variable-axis
2195
+ * glyph deltas land in Phase 4). Readers honour `version: 1` only;
2196
+ * future versions will get explicit migration code in `migrateSnapshot`.
2197
+ */
2198
+ interface SerializedColorGlyphLibrary {
2199
+ version: 1;
2200
+ entries: SerializedColorGlyph[];
2201
+ }
2202
+ /**
2203
+ * One color glyph in the library. All fields are JSON-serialisable;
2204
+ * the SVG document is stored as a string, not parsed, so round-tripping
2205
+ * preserves whatever DOM the user authored byte-for-byte.
2206
+ */
2207
+ interface SerializedColorGlyph {
2208
+ /** Internal glyph ID assigned by the library; resolved against the base font's cmap on export. */
2209
+ glyphId: number;
2210
+ /** PostScript glyph name (e.g. `"uni1F3A8"`). Optional — emitter generates one if absent. */
2211
+ glyphName?: string;
2212
+ /** Unicode codepoints this glyph maps from in `cmap`. Empty = unmapped (referenced only by GSUB). */
2213
+ codepoints: number[];
2214
+ /** Advance width in font units. Defaults to `unitsPerEm` if unset. */
2215
+ advanceWidth?: number;
2216
+ /** SVG document for the glyph. Root `<svg>` should carry `id="glyph${glyphId}"`. */
2217
+ svgDocument: string;
2218
+ /** Source font this glyph came from (when extracted via the Phase 2 break-apart). */
2219
+ sourceFamily?: string;
2220
+ /** Source glyph ID in the originating font. */
2221
+ sourceGlyphId?: number;
2222
+ /** Display label shown in the library panel. */
2223
+ label?: string;
2026
2224
  }
2027
2225
  /**
2028
2226
  * A variant axis on a component symbol. Each axis has a name (e.g.
@@ -2094,6 +2292,13 @@ interface SerializedGroup {
2094
2292
  filter?: string;
2095
2293
  cssFilter?: string;
2096
2294
  mixBlendMode?: string;
2295
+ /**
2296
+ * CSS `isolation` (Compositing & Blending §6.1). CSS-only property —
2297
+ * no SVG presentation-attribute form, so it lives in inline style on
2298
+ * the group element. Round-tripped here so authored
2299
+ * `<g style="isolation:isolate">` survives serialize/restore.
2300
+ */
2301
+ isolation?: string;
2097
2302
  clipPath?: string;
2098
2303
  mask?: string;
2099
2304
  /**
@@ -2388,6 +2593,7 @@ interface CommonNodeProps {
2388
2593
  gapLength: number;
2389
2594
  dashOffset: number;
2390
2595
  strokeDasharray: string | null;
2596
+ colorInterpolation: 'auto' | 'sRGB' | 'linearRGB' | null;
2391
2597
  filters: unknown[];
2392
2598
  filterColorInterpolation: 'auto' | 'sRGB' | 'linearRGB' | null;
2393
2599
  filterUnits: 'userSpaceOnUse' | 'objectBoundingBox' | null;
@@ -3988,6 +4194,68 @@ declare abstract class ShapeBuilder<T extends ShapeBuilder<T>> {
3988
4194
  cssClipPath(value: string): T;
3989
4195
  /** Set CSS mask sub-properties (`mask-image`, `mask-mode`, etc.). */
3990
4196
  cssMaskProperties(props: Record<string, string>): T;
4197
+ /**
4198
+ * SVG 2 §13.4 `vector-effect`. `non-scaling-stroke` keeps stroke width
4199
+ * constant under zoom and transforms (heavily used in CAD/diagram SVGs).
4200
+ */
4201
+ vectorEffect(value: 'none' | 'non-scaling-stroke' | 'non-scaling-size' | 'non-rotation' | 'fixed-position'): T;
4202
+ /** CSS Transforms 2 `transform-box`. */
4203
+ transformBox(value: 'view-box' | 'fill-box' | 'stroke-box' | 'content-box' | 'border-box'): T;
4204
+ /** SVG 2 §13.10 `paint-order` (e.g. `'stroke fill'`, `'fill stroke markers'`). */
4205
+ paintOrder(value: string): T;
4206
+ /** Compositing & Blending 2 `mix-blend-mode` (e.g. `'multiply'`, `'screen'`). */
4207
+ blendMode(value: string): T;
4208
+ /**
4209
+ * SVG `visibility` attribute — paint-only hiding that preserves layout.
4210
+ * Distinct from `.visible(false)` which sets `display:none`.
4211
+ */
4212
+ visibility(value: 'visible' | 'hidden' | 'collapse'): T;
4213
+ /** SVG 2 §13.6 `shape-rendering`. */
4214
+ shapeRendering(value: 'auto' | 'optimizeSpeed' | 'crispEdges' | 'geometricPrecision'): T;
4215
+ /** Color-interpolation hint for filter chains attached to this shape. */
4216
+ filterColorInterpolation(value: 'auto' | 'sRGB' | 'linearRGB'): T;
4217
+ /**
4218
+ * Suppress the shape-level `fill` so the `<use>` cascade can drive it
4219
+ * (used by symbol instances with `instancePresentation`).
4220
+ */
4221
+ inheritFill(value?: boolean): T;
4222
+ /** Suppress the shape-level `stroke` so the `<use>` cascade can drive it. */
4223
+ inheritStroke(value?: boolean): T;
4224
+ /** SVG 2 §5.8.5 `systemLanguage` conditional-processing attribute (BCP 47 tag). */
4225
+ systemLanguage(tag: string): T;
4226
+ /** SVG 2 §5.8 `requiredExtensions` conditional-processing attribute. */
4227
+ requiredExtensions(value: string): T;
4228
+ /**
4229
+ * Reference a library-registered fill (gradient or pattern) by id.
4230
+ * The `kind` parameter tells the renderer which `<defs>` shape to expect;
4231
+ * it's the discriminator on the matching `LibraryDef` entry.
4232
+ * Mutually exclusive with `.fill()`/`.fillGradient()`/`.fillPattern()`.
4233
+ */
4234
+ fillLibrary(id: string, kind?: 'linear-gradient' | 'radial-gradient' | 'pattern'): T;
4235
+ /** Reference a library-registered stroke (gradient or pattern) by id. */
4236
+ strokeLibrary(id: string, kind?: 'linear-gradient' | 'radial-gradient' | 'pattern'): T;
4237
+ /**
4238
+ * Reference one or more library-registered filters by id. The chain is
4239
+ * composed in order, then merged with any inline `.filter()`/`.dropShadow()`/etc.
4240
+ */
4241
+ filterLibrary(...ids: string[]): T;
4242
+ /**
4243
+ * Reference a library-registered marker for the start vertex.
4244
+ * Distinct from the `Line`/`Path` `.markerStart()` preset accessors —
4245
+ * those set the `startEndpoint` preset, this points at a library def id.
4246
+ */
4247
+ markerStartRef(id: string): T;
4248
+ /** Reference a library-registered marker for intermediate vertices. */
4249
+ markerMidRef(id: string): T;
4250
+ /** Reference a library-registered marker for the end vertex. */
4251
+ markerEndRef(id: string): T;
4252
+ /**
4253
+ * Bind a shape property to a template variable name. The variable must be
4254
+ * registered on the document via `Document.defineVariable(...)`. At export
4255
+ * time the property's serialized value is replaced by `{{varName}}`, which
4256
+ * `Document.toSVG({ variables })` then substitutes.
4257
+ */
4258
+ bind(propertyName: string, variableName: string): T;
3991
4259
  /** Set shape metadata (name, title, description, etc). */
3992
4260
  metadata(meta: Partial<ShapeMetadata>): T;
3993
4261
  /** Assign this shape to a group. */
@@ -4111,6 +4379,26 @@ declare class Text extends ShapeBuilder<Text> {
4111
4379
  shapePadding(value: number): Text;
4112
4380
  /** Set rich text data for per-segment styling. */
4113
4381
  richTextData(data: RichTextData): Text;
4382
+ /**
4383
+ * Toggle rich-text rendering. When `true`, `richTextData` drives output and
4384
+ * the plain `text` field is treated as a fallback. When `false` (default),
4385
+ * the plain `text` field is rendered.
4386
+ */
4387
+ useRichText(flag?: boolean): Text;
4388
+ /**
4389
+ * Set per-line position overrides. Used when imported `<tspan>` runs
4390
+ * carried explicit `x`/`y`/`dx`/`dy` lists that the editor must round-trip.
4391
+ */
4392
+ linePositions(positions: {
4393
+ x?: number | null;
4394
+ y?: number | null;
4395
+ dx?: number;
4396
+ dy?: number;
4397
+ }[]): Text;
4398
+ /** SVG `textLength` attribute (target advance width). */
4399
+ textLength(value: number): Text;
4400
+ /** SVG `lengthAdjust` attribute (`spacing` or `spacingAndGlyphs`). */
4401
+ lengthAdjust(value: 'spacing' | 'spacingAndGlyphs'): Text;
4114
4402
  }
4115
4403
  declare abstract class PolygonShapeBuilder<T extends PolygonShapeBuilder<T>> extends ShapeBuilder<T> {
4116
4404
  constructor(type: SerializedShape['type'], cx: number, cy: number, radius: number);
@@ -4173,6 +4461,166 @@ declare class Arrow extends PolygonShapeBuilder<Arrow> {
4173
4461
  /** Set the arrow shaft width as a percent (0–100). */
4174
4462
  shaftWidth(percent: number): Arrow;
4175
4463
  }
4464
+ declare class Heart extends PolygonShapeBuilder<Heart> {
4465
+ constructor(cx: number, cy: number, radius: number);
4466
+ /** Set the lobe radius as a percent of the bounding circle (30–70). */
4467
+ lobeRadius(percent: number): Heart;
4468
+ /** Set the cleft (top notch) depth as a percent (10–50). */
4469
+ cleftDepth(percent: number): Heart;
4470
+ }
4471
+ declare class Lightning extends PolygonShapeBuilder<Lightning> {
4472
+ constructor(cx: number, cy: number, radius: number);
4473
+ /** Set the number of zigzag bend segments. */
4474
+ segments(n: number): Lightning;
4475
+ /** Set the horizontal sway as a percent (10–80). */
4476
+ jaggedness(percent: number): Lightning;
4477
+ /** Set the bolt ribbon thickness as a percent (10–60). */
4478
+ thickness(percent: number): Lightning;
4479
+ }
4480
+ declare class Cloud extends PolygonShapeBuilder<Cloud> {
4481
+ constructor(cx: number, cy: number, radius: number);
4482
+ /** Set the number of bumps around the cloud silhouette. */
4483
+ bumps(n: number): Cloud;
4484
+ /** Set the puffiness (bump radius) as a percent. */
4485
+ puffiness(percent: number): Cloud;
4486
+ }
4487
+ declare class SpeechBubble extends PolygonShapeBuilder<SpeechBubble> {
4488
+ constructor(cx: number, cy: number, radius: number);
4489
+ /** Set the tail angle in degrees (0 = right, 90 = down, etc.). */
4490
+ tailAngle(degrees: number): SpeechBubble;
4491
+ /** Set the tail length as a percent of the bounding radius. */
4492
+ tailLength(percent: number): SpeechBubble;
4493
+ /** Set the tail base width as a percent of the bounding radius. */
4494
+ tailWidth(percent: number): SpeechBubble;
4495
+ }
4496
+ /**
4497
+ * Mixin base for shape builders whose `state.children` is an inline array
4498
+ * of `SerializedShape`. Hyperlink, Switch, Container, NestedSvg all extend
4499
+ * this. The `.add()` method accepts another `ShapeBuilder` (its `.build()`
4500
+ * is called immediately) or a raw `SerializedShape`.
4501
+ */
4502
+ declare abstract class ContainerShapeBuilder<T extends ContainerShapeBuilder<T>> extends ShapeBuilder<T> {
4503
+ /** Append a shape (builder or pre-built SerializedShape) as a child. */
4504
+ add(shape: ShapeBuilder<any> | SerializedShape): T;
4505
+ /** Append multiple children in a single call. */
4506
+ addAll(...shapes: (ShapeBuilder<any> | SerializedShape)[]): T;
4507
+ /** Replace the children array wholesale. */
4508
+ children(shapes: (ShapeBuilder<any> | SerializedShape)[]): T;
4509
+ }
4510
+ declare class Hyperlink extends ContainerShapeBuilder<Hyperlink> {
4511
+ constructor(href?: string);
4512
+ /** Set the link target URL (`href` attribute). */
4513
+ href(value: string): Hyperlink;
4514
+ /** Set the legacy `xlink:href` (kept for round-trip with SVG 1.1 sources). */
4515
+ hrefXlink(value: string): Hyperlink;
4516
+ /** Set the link target window — `'_self'`, `'_blank'`, etc. */
4517
+ target(value: '_self' | '_blank' | '_parent' | '_top' | string): Hyperlink;
4518
+ /** Set the `download` attribute (file name hint for download links). */
4519
+ download(value: string): Hyperlink;
4520
+ /** Set the `rel` attribute (e.g. `'noopener noreferrer'`). */
4521
+ rel(value: string): Hyperlink;
4522
+ /** Set the `ping` attribute (space-separated URLs notified on click). */
4523
+ ping(value: string): Hyperlink;
4524
+ /** Set the `hreflang` attribute. */
4525
+ hreflang(value: string): Hyperlink;
4526
+ /** Set the `type` attribute (MIME type hint for the destination). */
4527
+ type(value: string): Hyperlink;
4528
+ /** Set the `referrerpolicy` attribute. */
4529
+ referrerPolicy(value: string): Hyperlink;
4530
+ }
4531
+ declare class Switch extends ContainerShapeBuilder<Switch> {
4532
+ constructor();
4533
+ }
4534
+ /**
4535
+ * Generic container shape: emits `<g>` wrapping inline children. Distinct
4536
+ * from the editor's `Group` system, which uses flat-with-`groupId` storage —
4537
+ * use this when programmatically composing a document where you want the
4538
+ * children persisted under their parent rather than in the flat shapes array.
4539
+ */
4540
+ declare class Container extends ContainerShapeBuilder<Container> {
4541
+ constructor();
4542
+ }
4543
+ declare class View extends ShapeBuilder<View> {
4544
+ constructor(viewBox?: {
4545
+ x: number;
4546
+ y: number;
4547
+ width: number;
4548
+ height: number;
4549
+ });
4550
+ /** Set the viewBox (x, y, width, height) the view exposes. */
4551
+ viewBox(x: number, y: number, width: number, height: number): View;
4552
+ /** Human-readable name (round-tripped as `data-view-name`). */
4553
+ name(value: string): View;
4554
+ /** SVG 2 `preserveAspectRatio` (e.g. `'xMidYMid meet'`). */
4555
+ preserveAspectRatio(value: string): View;
4556
+ /** Legacy `zoomAndPan` attribute (`'disable' | 'magnify'`). */
4557
+ zoomAndPan(value: 'disable' | 'magnify'): View;
4558
+ /** SVG `viewTarget` attribute. */
4559
+ viewTarget(value: string): View;
4560
+ /** Mark this view as the canonical "home" view of the document. */
4561
+ asHome(value?: boolean): View;
4562
+ }
4563
+ declare class NestedSvg extends ContainerShapeBuilder<NestedSvg> {
4564
+ constructor(x?: number, y?: number, width?: number, height?: number);
4565
+ /** Set the position on the parent canvas. */
4566
+ position(x: number, y: number): NestedSvg;
4567
+ /** Set width and height on the parent canvas. */
4568
+ size(width: number, height: number): NestedSvg;
4569
+ /** Set the `viewBox` (the inner coordinate system). */
4570
+ viewBox(x: number, y: number, width: number, height: number): NestedSvg;
4571
+ /** SVG 2 `preserveAspectRatio` for the nested viewport. */
4572
+ preserveAspectRatio(value: string): NestedSvg;
4573
+ /** Mark this as the root SVG element (rare; typically only one per document). */
4574
+ asRoot(value?: boolean): NestedSvg;
4575
+ }
4576
+ declare class ShapeReference extends ShapeBuilder<ShapeReference> {
4577
+ constructor(targetShapeId?: string);
4578
+ /** ID of the shape this reference clones. */
4579
+ target(shapeId: string): ShapeReference;
4580
+ /** Offset from the source's reference point (mapped to `<use x>`/`<use y>`). */
4581
+ offset(x: number, y: number): ShapeReference;
4582
+ /** Override the rendered width/height (mapped to `<use width>`/`<use height>`). */
4583
+ size(width: number, height: number): ShapeReference;
4584
+ }
4585
+ declare abstract class MediaShapeBuilder<T extends MediaShapeBuilder<T>> extends ShapeBuilder<T> {
4586
+ /** Position on the canvas. */
4587
+ position(x: number, y: number): T;
4588
+ /** Bounding-box width/height of the foreignObject wrapper. */
4589
+ size(width: number, height: number): T;
4590
+ /** Source URL or data URI. */
4591
+ src(href: string): T;
4592
+ /** MIME type hint (e.g. `'video/mp4'`, `'audio/mpeg'`). */
4593
+ mimeType(value: string): T;
4594
+ /** Source duration in seconds (set by the editor on `loadedmetadata`). */
4595
+ naturalDuration(seconds: number): T;
4596
+ /** Timeline offset where playback starts. */
4597
+ begin(seconds: number): T;
4598
+ /** Source-relative in/out trim (seconds). */
4599
+ trim(start: number, end: number): T;
4600
+ volume(value: number): T;
4601
+ muted(value?: boolean): T;
4602
+ loop(value?: boolean): T;
4603
+ playbackRate(value: number): T;
4604
+ /** Convenience volume ramps applied live by the sync controller. */
4605
+ fade(inDuration: number, outDuration: number): T;
4606
+ /** SVG conditional-processing `systemLanguage` (BCP 47 tag). */
4607
+ language(tag: string): T;
4608
+ }
4609
+ declare class Video extends MediaShapeBuilder<Video> {
4610
+ constructor(href?: string);
4611
+ /** First-frame thumbnail URL or data URI. */
4612
+ poster(href: string): Video;
4613
+ /** Crop window in source-pixel space. */
4614
+ sourceRect(rect: {
4615
+ x: number;
4616
+ y: number;
4617
+ width: number;
4618
+ height: number;
4619
+ }): Video;
4620
+ }
4621
+ declare class Audio extends MediaShapeBuilder<Audio> {
4622
+ constructor(href?: string);
4623
+ }
4176
4624
  declare class Path extends ShapeBuilder<Path> {
4177
4625
  constructor(points?: (Point | PathPoint)[]);
4178
4626
  /** Set the spline points. */
@@ -4193,6 +4641,15 @@ declare class Path extends ShapeBuilder<Path> {
4193
4641
  markerEnd(style: EndpointStyle): Path;
4194
4642
  /** Convenience: set both markers. */
4195
4643
  markers(start: EndpointStyle, end: EndpointStyle): Path;
4644
+ /**
4645
+ * Resolve this path to its SVG `d` attribute string. Useful for path-morph
4646
+ * animations: the `d` track property accepts a `d` string per keyframe, and
4647
+ * SMIL interpolates between matching command sequences character-by-character.
4648
+ *
4649
+ * The output uses the same geometry pipeline as `Document.toSVG()`, so the
4650
+ * animated values match the static render of the same path exactly.
4651
+ */
4652
+ toD(): string;
4196
4653
  }
4197
4654
  declare class Polyline extends ShapeBuilder<Polyline> {
4198
4655
  constructor(points?: Point[]);
@@ -4518,6 +4975,16 @@ declare class Document {
4518
4975
  viewBox?: string;
4519
4976
  thumbnail?: string;
4520
4977
  groups?: SerializedGroup[];
4978
+ /** SVG-element form: `'symbol'` (the default) or `'group'` (`<defs><g>`). */
4979
+ defKind?: 'symbol' | 'group';
4980
+ /** Wrapper attributes from a source `<g id>` def root, when `defKind === 'group'`. */
4981
+ wrapperAttrs?: Record<string, string>;
4982
+ /** Named variant axes, e.g. `[{ name: 'color', values: ['red', 'blue'] }]`. */
4983
+ variantAxes?: SerializedVariantAxis[];
4984
+ /** Variant shape arrays keyed by canonical `axis=val,…` string. */
4985
+ variants?: Record<string, SerializedShape[]>;
4986
+ /** Per-variant thumbnails keyed by canonical variant string. */
4987
+ variantThumbnails?: Record<string, string>;
4521
4988
  }): string;
4522
4989
  /**
4523
4990
  * Place a symbol instance on the canvas.
@@ -4525,14 +4992,88 @@ declare class Document {
4525
4992
  * @param symbolId - The ID of the symbol definition.
4526
4993
  * @param x - X position.
4527
4994
  * @param y - Y position.
4528
- * @param width - Instance width (optional).
4529
- * @param height - Instance height (optional).
4995
+ * @param widthOrOptions - Instance width, or an options bag.
4996
+ * @param height - Instance height (only when `widthOrOptions` is a number).
4530
4997
  */
4531
- placeSymbolInstance(symbolId: string, x: number, y: number, width?: number, height?: number): Document;
4998
+ placeSymbolInstance(symbolId: string, x: number, y: number, widthOrOptions?: number | {
4999
+ width?: number;
5000
+ height?: number;
5001
+ /** Selected variant key, e.g. `'color=red,size=large'`. */
5002
+ variantKey?: string;
5003
+ /** Per-inner-shape state patches applied to this instance only. */
5004
+ symbolOverrides?: Record<string, Partial<SerializedShape['state']>>;
5005
+ /** Per-instance attribute cascade applied to the `<use>` element (SVG 2 §5.5.4). */
5006
+ instancePresentation?: Record<string, string>;
5007
+ }, height?: number): Document;
4532
5008
  /** Remove a symbol definition by ID. */
4533
5009
  removeSymbol(id: string): boolean;
4534
5010
  /** Get all symbol definitions. */
4535
5011
  get symbols(): readonly SerializedSymbolDef[];
5012
+ /**
5013
+ * Register a marker definition. Shapes can then reference the marker by
5014
+ * id via `.markerStartRef(id)` / `.markerMidRef(id)` / `.markerEndRef(id)`.
5015
+ *
5016
+ * @returns The marker library def id.
5017
+ */
5018
+ defineMarker(name: string, shapes: (ShapeBuilder<any> | SerializedShape)[], options?: {
5019
+ viewBox?: string;
5020
+ refX?: number;
5021
+ refY?: number;
5022
+ markerWidth?: number;
5023
+ markerHeight?: number;
5024
+ markerUnits?: 'strokeWidth' | 'userSpaceOnUse';
5025
+ orient?: 'auto' | 'auto-start-reverse' | number;
5026
+ thumbnail?: string;
5027
+ groups?: SerializedGroup[];
5028
+ }): string;
5029
+ /**
5030
+ * Register a reusable filter chain. Shapes reference it via `.filterLibrary(id)`.
5031
+ *
5032
+ * @returns The filter library def id.
5033
+ */
5034
+ defineFilter(name: string, filters: ShapeFilter[], options?: {
5035
+ colorInterpolation?: 'auto' | 'sRGB' | 'linearRGB';
5036
+ filterUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
5037
+ primitiveUnits?: 'userSpaceOnUse' | 'objectBoundingBox';
5038
+ x?: string;
5039
+ y?: string;
5040
+ width?: string;
5041
+ height?: string;
5042
+ thumbnail?: string;
5043
+ }): string;
5044
+ /**
5045
+ * Register a reusable linear gradient. Shapes reference it via `.fillLibrary(id)`.
5046
+ *
5047
+ * @returns The library def id.
5048
+ */
5049
+ defineLinearGradientLibrary(name: string, gradient: LinearGradientBuilder | LinearGradient, options?: {
5050
+ thumbnail?: string;
5051
+ }): string;
5052
+ /**
5053
+ * Register a reusable radial gradient. Shapes reference it via `.fillLibrary(id, 'radial-gradient')`.
5054
+ *
5055
+ * @returns The library def id.
5056
+ */
5057
+ defineRadialGradientLibrary(name: string, gradient: RadialGradientBuilder | RadialGradient, options?: {
5058
+ thumbnail?: string;
5059
+ }): string;
5060
+ /**
5061
+ * Register a reusable pattern. Shapes reference it via `.fillLibrary(id, 'pattern')`.
5062
+ *
5063
+ * @returns The library def id.
5064
+ */
5065
+ definePatternLibrary(name: string, pattern: PatternBuilder | PatternFill, options?: {
5066
+ thumbnail?: string;
5067
+ }): string;
5068
+ /** Remove a library def (marker / filter / gradient / pattern) by id. */
5069
+ removeLibraryDef(id: string): boolean;
5070
+ /** Read-only view of every registered library def. */
5071
+ get library(): readonly LibraryDef[];
5072
+ /**
5073
+ * Push a library def, lazily initializing `_snapshot.library` and
5074
+ * deduplicating by id (last write wins).
5075
+ */
5076
+ private _pushLibraryDef;
4536
5077
  /**
4537
5078
  * Add a clip group.
4538
5079
  *
@@ -4751,4 +5292,4 @@ declare class Document {
4751
5292
  private _ensureMetadata;
4752
5293
  }
4753
5294
 
4754
- export { type AnimatablePropertyDescriptor, type AnimationKeyframe, type AnimationTimeline, type AnimationTrack, type AnimationTrigger, type AnimationTriggerType, type AnyNodeProps, type ArcParams$1 as ArcParams, type AriaRole, Arrow, type ArrowNodeProps, BUILTIN_MARKER_ID_MAP, type BaseFilter, type BaseFilterPrimitive, type BlackAndWhiteFilter, type BlurQuality, type BrightnessFilter, CURRENT_SCHEMA_VERSION, type ChannelPainterFilter, Circle, type CircleNodeProps, type CodeFormat, type CodegenOptions, type CommonNodeProps, type ConnectionDirection, type ConnectionPoint, type ContouringDiscreteFilter, type ContouringTableFilter, type ContrastFilter, type CornerShapeValue, type CreateDocumentOptions, type CreateShapeOptions, Cross, type CrossNodeProps, type CrumpledPlasticFilter, type CustomPatternDef, type CycleBehavior, DEFAULT_COORDINATE_PRECISION, type DiffuseLightingFilter, Document, type DocumentMetadata, type DocumentNodeProps, type DocumentOptions, type DocumentScript, type DocumentStyle, type DropShadowFilter, type DuotoneFilter, EASING_CURVES, EVENT_TRIGGER_OPTIONS, EasingType, Ellipse, type EllipseNodeProps, type EmbossFilter, type ExtractedVariables, type FeBlendPrimitive, type FeColorMatrixPrimitive, type FeComponentTransferPrimitive, type FeCompositePrimitive, type FeConvolveMatrixPrimitive, type FeDiffuseLightingPrimitive, type FeDisplacementMapPrimitive, type FeDropShadowPrimitive, type FeFloodPrimitive, type FeGaussianBlurPrimitive, type FeImagePrimitive, type FeMergePrimitive, type FeMorphologyPrimitive, type FeOffsetPrimitive, type FeSpecularLightingPrimitive, type FeTilePrimitive, type FeTurbulencePrimitive, type FillType, type FilmGrainFilter, type FilterBlendMode, type FilterLibraryDef, type FilterLightSource, type FilterPrimitive, type FilterPrimitiveType, type FilterType, type GaussianBlurFilter, Gear, type GearNodeProps, type GlowFilter, type GouacheFilter, type GradientDefinition, type GradientSpreadMethod, type GradientStop, type GradientUnits, type GrayscaleFilter, type GroupNodeProps, type Guide, type HistorySnapshot, type HueRotateFilter, type ImageAttribution, type ImageNodeProps, ImageShape, type InkBlotFilter, type InnerGlowFilter, type InnerShadowFilter, type InvertFilter, LIBRARY_EMIT_ORDER, type LibraryDef, type LibraryDefBase, type LibraryDefOfKind, type LibraryKind, type LicenseType, type LightSource, Line, type LineEndpointValue, type LineNodeProps, type LinearEasingPoint, type LinearGradient, LinearGradientBuilder, type LinearGradientLibraryDef, type LinkTarget, MARKER_HEIGHT, MARKER_VIEWBOX, MARKER_WIDTH, MAX_COORDINATE_PRECISION, MIGRATIONS, type MarkerDescriptor, type MarkerLibraryDef, type Measurement, type Migration, type MorphologyFilter, type MorphologyOperator, type MotionBlurFilter, NGon, type NGonNodeProps, type NodeTypePropsMap, type NoiseFilter, type OpacityFilter, type OutlineFilter, type OutlinePosition, type ParseOptions, Path, PathCurveType, type PathNodeProps, type PathPoint, PathPointType, PatternBuilder, type PatternElement, type PatternFill, type PatternLibraryDef, type PatternParams, type PatternSvgContentResult, type PatternType, type PixelateFilter, type Point, type PointLightFilter, type PolygonBaseNodeProps, Polyline, type PolylineNodeProps, type RadialGradient, RadialGradientBuilder, type RadialGradientLibraryDef, type RawSvgFilter, Rectangle, type RectangleNodeProps, type RenderOptions, type RichTextData, type RichTextLine, type RichTextSegment, type RichTextSegmentStyle, type RiddledFilter, Ring, type RingNodeProps, type RoundEdgesFilter, type SaturateFilter, type SegmentCurveType, type SepiaFilter, type SerializedAnimationTimeline, type SerializedClipMaskGroup, type SerializedGroup, type SerializedMarkerDef, type SerializedShape, type SerializedSymbolDef, type SerializedVariantAxis, type SerializedViewbox, ShapeBuilder, type ShapeFilter, type ShapeMetadata, type SharpenFilter, type SpecularLightingFilter, Spiral, type SpiralNodeProps, type SpotLightFilter, Square, type SquareNodeProps, Star, type StarNodeProps, type StepPosition, type StepsParams, type StringifyOptions, type StrokeType, type SvgPrimitiveChainFilter, type SymbolInstanceNodeProps, type SymbolLibraryDef, type TemplateVariable, type TemplateVariableMode, type TemplateVariableSource, type TemplateVariableType, Text, type TextNodeProps, Timeline, Track, type TransferFunc, Triangle, type TriangleNodeProps, type ValidationError, type ValidationResult, type VariableMap, type Viewbox, type WarpFilter, type WarpType, type WatercolorFilter, type XrayFilter, collectReferencedLibraryIds, computeArrowVertices, computeCloudPath, computeCrossVertices, computeDashArray, computeGearPath, computeGearVertices, computeHeartPath, computeLightningVertices, computePolygonVertices, computeRectanglePath, computeRingPath, computeSpeechBubbleVertices, computeSpiralPath, computeSplinePath, computeStarVertices, createDocument, createShape, createViewbox, defaultVariableMode, escXml, extractVariables, filterAttr, generateCode, generateCssCode, generateD3Code, generateId, generatePatternSvgContent, generateReactCode, generateSvgCode, generateVueCode, getBuiltInMarkerDefs, getEasingCubicBezier, getEffectivePrecision, getMarkerDescriptors, getPatternElements, linearGradient, migrateSnapshot, parseDocument, parseVariableArgs, pattern, radialGradient, renderAnimationElements, renderBuiltinMarkerDefs, renderCircle, renderEllipse, renderFilterDefs, renderFilterLibraryDef, renderFilterPrimitive, renderFilterPrimitivesForType, renderImage, renderLibraryDef, renderLibraryDefs, renderLine, renderLinearGradientLibraryDef, renderMarkerLibraryDef, renderPatternLibraryDef, renderPolygonShape, renderPolyline, renderRadialGradientLibraryDef, renderRectangle, renderReferencedLibraryDefs, renderShape, renderSpline, renderSvgPrimitiveChainFilter, renderSymbolLibraryDef, renderText, renderToSvg, roundCoord, roundNumberString, roundSerializedShape, roundSnapshot, stringifyDocument, substituteString, substituteVariables, validateSnapshot, verticesToPath };
5295
+ export { type AnimatablePropertyDescriptor, type AnimationKeyframe, type AnimationTimeline, type AnimationTrack, type AnimationTrigger, type AnimationTriggerType, type AnyNodeProps, type ArcParams$1 as ArcParams, type AriaRole, Arrow, type ArrowNodeProps, Audio, BUILTIN_MARKER_ID_MAP, type BaseFilter, type BaseFilterPrimitive, type BlackAndWhiteFilter, type BlurQuality, type BrightnessFilter, CURRENT_SCHEMA_VERSION, type ChannelPainterFilter, Circle, type CircleNodeProps, Cloud, type CodeFormat, type CodegenOptions, type CommonNodeProps, type ConnectionDirection, type ConnectionPoint, Container, ContainerShapeBuilder, type ContouringDiscreteFilter, type ContouringTableFilter, type ContrastFilter, type CornerShapeValue, type CreateDocumentOptions, type CreateShapeOptions, Cross, type CrossNodeProps, type CrumpledPlasticFilter, type CustomPatternDef, type CycleBehavior, DEFAULT_COORDINATE_PRECISION, type DiffuseLightingFilter, Document, type DocumentMetadata, type DocumentNodeProps, type DocumentOptions, type DocumentScript, type DocumentStyle, type DropShadowFilter, type DuotoneFilter, EASING_CURVES, EVENT_TRIGGER_OPTIONS, EasingType, Ellipse, type EllipseNodeProps, type EmbossFilter, type ExtractedVariables, type FeBlendPrimitive, type FeColorMatrixPrimitive, type FeComponentTransferPrimitive, type FeCompositePrimitive, type FeConvolveMatrixPrimitive, type FeDiffuseLightingPrimitive, type FeDisplacementMapPrimitive, type FeDropShadowPrimitive, type FeFloodPrimitive, type FeGaussianBlurPrimitive, type FeImagePrimitive, type FeMergePrimitive, type FeMorphologyPrimitive, type FeOffsetPrimitive, type FeSpecularLightingPrimitive, type FeTilePrimitive, type FeTurbulencePrimitive, type FillType, type FilmGrainFilter, type FilterBlendMode, type FilterLibraryDef, type FilterLightSource, type FilterPrimitive, type FilterPrimitiveType, type FilterType, type GaussianBlurFilter, Gear, type GearNodeProps, type GlowFilter, type GouacheFilter, type GradientDefinition, type GradientSpreadMethod, type GradientStop, type GradientUnits, type GrayscaleFilter, type GroupNodeProps, type Guide, Heart, type HistorySnapshot, type HueRotateFilter, Hyperlink, type ImageAttribution, type ImageNodeProps, ImageShape, type InkBlotFilter, type InnerGlowFilter, type InnerShadowFilter, type InvertFilter, LIBRARY_EMIT_ORDER, type LibraryDef, type LibraryDefBase, type LibraryDefOfKind, type LibraryKind, type LicenseType, type LightSource, Lightning, Line, type LineEndpointValue, type LineNodeProps, type LinearEasingPoint, type LinearGradient, LinearGradientBuilder, type LinearGradientLibraryDef, type LinkTarget, MARKER_HEIGHT, MARKER_VIEWBOX, MARKER_WIDTH, MAX_COORDINATE_PRECISION, MIGRATIONS, type MarkerDescriptor, type MarkerLibraryDef, type Measurement, type Migration, type MorphologyFilter, type MorphologyOperator, type MotionBlurFilter, NGon, type NGonNodeProps, NestedSvg, type NodeTypePropsMap, type NoiseFilter, type OpacityFilter, type OutlineFilter, type OutlinePosition, type ParseOptions, Path, PathCurveType, type PathNodeProps, type PathPoint, PathPointType, PatternBuilder, type PatternElement, type PatternFill, type PatternLibraryDef, type PatternParams, type PatternSvgContentResult, type PatternType, type PixelateFilter, type Point, type PointLightFilter, type PolygonBaseNodeProps, Polyline, type PolylineNodeProps, type RadialGradient, RadialGradientBuilder, type RadialGradientLibraryDef, type RawSvgFilter, Rectangle, type RectangleNodeProps, type RenderOptions, type RichTextData, type RichTextLine, type RichTextSegment, type RichTextSegmentStyle, type RiddledFilter, Ring, type RingNodeProps, type RoundEdgesFilter, type SaturateFilter, type SegmentCurveType, type SepiaFilter, type SerializedAnimationTimeline, type SerializedClipMaskGroup, type SerializedColorGlyph, type SerializedColorGlyphLibrary, type SerializedGroup, type SerializedMarkerDef, type SerializedShape, type SerializedSymbolDef, type SerializedVariantAxis, type SerializedViewbox, ShapeBuilder, type ShapeFilter, type ShapeMetadata, ShapeReference, type SharpenFilter, type SpecularLightingFilter, SpeechBubble, Spiral, type SpiralNodeProps, type SpotLightFilter, Square, type SquareNodeProps, Star, type StarNodeProps, type StepPosition, type StepsParams, type StringifyOptions, type StrokeType, type SvgPrimitiveChainFilter, Switch, type SymbolInstanceNodeProps, type SymbolLibraryDef, type TemplateVariable, type TemplateVariableMode, type TemplateVariableSource, type TemplateVariableType, Text, type TextNodeProps, Timeline, Track, type TransferFunc, Triangle, type TriangleNodeProps, type ValidationError, type ValidationResult, type VariableMap, Video, View, type Viewbox, type WarpFilter, type WarpType, type WatercolorFilter, type XrayFilter, collectReferencedLibraryIds, computeArrowVertices, computeCloudPath, computeCrossVertices, computeDashArray, computeGearPath, computeGearVertices, computeHeartPath, computeLightningVertices, computePolygonVertices, computeRectanglePath, computeRingPath, computeSpeechBubbleVertices, computeSpiralPath, computeSplinePath, computeStarVertices, createDocument, createShape, createViewbox, defaultVariableMode, escXml, extractVariables, filterAttr, generateCode, generateCssCode, generateD3Code, generateId, generatePatternSvgContent, generateReactCode, generateSvgCode, generateVueCode, getBuiltInMarkerDefs, getEasingCubicBezier, getEffectivePrecision, getMarkerDescriptors, getPatternElements, linearGradient, migrateSnapshot, parseDocument, parseVariableArgs, pattern, radialGradient, renderAnimationElements, renderBuiltinMarkerDefs, renderCircle, renderEllipse, renderFilterDefs, renderFilterLibraryDef, renderFilterPrimitive, renderFilterPrimitivesForType, renderImage, renderLibraryDef, renderLibraryDefs, renderLine, renderLinearGradientLibraryDef, renderMarkerLibraryDef, renderPatternLibraryDef, renderPolygonShape, renderPolyline, renderRadialGradientLibraryDef, renderRectangle, renderReferencedLibraryDefs, renderShape, renderSpline, renderSvgPrimitiveChainFilter, renderSymbolLibraryDef, renderText, renderToSvg, roundCoord, roundNumberString, roundSerializedShape, roundSnapshot, stringifyDocument, substituteString, substituteVariables, validateSnapshot, verticesToPath };