@svgsketch/core 6.1.0 → 6.3.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
@@ -6217,6 +6217,18 @@ interface SceneTreeReplayHost {
6217
6217
  */
6218
6218
  declare function replaySceneTreePlacements(sceneTree: readonly SerializedSceneNodePlacement[], host: SceneTreeReplayHost): void;
6219
6219
 
6220
+ /**
6221
+ * The root font size a document is resolved against when nothing authors one.
6222
+ *
6223
+ * CSS Values 4 gives `rem` the root element's computed font size, and SVG 2
6224
+ * inherits that. A document carries no browser, so the initial value is the
6225
+ * only answer available to a model-side resolver: reading the host page's
6226
+ * root font size instead would make the same authored `2em` mean different
6227
+ * geometry for a reader who has raised their browser's default text size.
6228
+ * Every path that resolves authored lengths shares this, so a length resolved
6229
+ * at import and the same length re-resolved during an edit agree.
6230
+ */
6231
+ declare const INITIAL_ROOT_FONT_SIZE = 16;
6220
6232
  interface SvgLengthContext {
6221
6233
  readonly percentBasis?: number;
6222
6234
  readonly viewportWidth?: number;
@@ -8759,11 +8771,21 @@ declare class SvgSourceDecodingError extends Error {
8759
8771
  constructor(message: string, cause?: unknown | undefined);
8760
8772
  }
8761
8773
  /**
8762
- * Decode an SVG XML byte stream using XML 1.0 Appendix F detection.
8774
+ * Decode an SVG XML byte stream.
8775
+ *
8776
+ * Precedence follows the browsers rather than the letter of XML 1.0:
8763
8777
  *
8764
- * Byte-order marks and the UTF-16 opening signature take precedence over an
8765
- * ASCII-compatible declaration.
8766
- * The decoder is fatal so malformed input cannot become a different document
8778
+ * 1. A byte-order mark or a UTF-16 opening signature decides the encoding on
8779
+ * its own. XML 1.0 §4.3.3 makes a declaration that disagrees with the
8780
+ * signature a fatal error, but Blink and Gecko decode from the signature and
8781
+ * never consult the declaration afterwards (a UTF-8 BOM ahead of
8782
+ * `encoding="UTF-16"` renders in every browser), so the editor opens what
8783
+ * they render.
8784
+ * 2. Otherwise the declaration's label decides, resolved through the Encoding
8785
+ * Standard's label table.
8786
+ * 3. Otherwise UTF-8, as Appendix F prescribes.
8787
+ *
8788
+ * Decoding is fatal so malformed bytes cannot become a different document
8767
8789
  * through replacement characters.
8768
8790
  */
8769
8791
  declare function decodeSvgSourceBytes(bytes: Uint8Array): DecodedSvgSource;
@@ -10961,6 +10983,15 @@ declare function patternTileSize(pattern: Omit<PatternFill, 'id' | 'sourceId' |
10961
10983
  * `isReusablePatternTile`).
10962
10984
  */
10963
10985
  declare function patternLibraryDefToCustomPatternDef(def: PatternLibraryDef): CustomPatternDef | null;
10986
+ /**
10987
+ * The reusable tile a pattern def paints with, as the flat view the editor's
10988
+ * pattern pickers speak.
10989
+ *
10990
+ * Resolves both halves of the question a picker asks: which def owns the tile
10991
+ * (see `patternTileOwner`) and how big that tile is once the chain's geometry
10992
+ * is merged, so an alias and the pattern it inherits from answer identically.
10993
+ */
10994
+ declare function resolvePatternTile(definitionOrId: PatternLibraryDef | string, library: readonly LibraryDef[]): CustomPatternDef | null;
10964
10995
 
10965
10996
  /**
10966
10997
  * What kind of string a payload slot holds.
@@ -12355,8 +12386,18 @@ type RenderDiagnosticSeverity = 'warning' | 'error';
12355
12386
  * - `inert-text-path-morph`: a text shape carries a `textPathMorph` track
12356
12387
  * but does not own the geometry its `<textPath>` follows (it links another
12357
12388
  * shape or definition, or is not on a path), so the track was not emitted.
12358
- */
12359
- declare const RENDER_DIAGNOSTIC_CODES: readonly ["unsupported-shape-type", "unsupported-polygon-type", "unresolved-reference", "undeclarable-namespace-prefix", "unresolved-container-pivot", "unresolved-reference-pivot", "duplicate-shape-id", "reference-cycle", "unresolved-svg-viewport", "symbol-cycle", "unresolved-symbol-definition", "duplicate-library-id", "invalid-symbol-viewport", "unresolved-symbol-viewport", "unresolved-symbol-pivot", "unknown-symbol-variant", "ambiguous-symbol-override-target", "unresolved-symbol-override-target", "unexpandable-appearance-stack", "inert-text-path-morph"];
12389
+ * - `inert-variant-transition-content`: an `instanceVariant` segment adds or
12390
+ * crossfades an inner shape, but the definition is a native-shape def whose
12391
+ * single root element cannot host siblings (SVG 2 §5.5), so that content
12392
+ * was not emitted. Property animations on the root still are.
12393
+ * - `unresolved-variant-transition-pivot`: a variant segment rotates an inner
12394
+ * shape whose center is not analytic (text, containers) and no measurement
12395
+ * host was supplied, so the pivot-following rotation was not emitted.
12396
+ * - `shared-variant-transition-gradient`: a variant segment animates a
12397
+ * gradient definition that more than one shape references, so the animation
12398
+ * is visible on every referent rather than only the transitioning instance.
12399
+ */
12400
+ declare const RENDER_DIAGNOSTIC_CODES: readonly ["unsupported-shape-type", "unsupported-polygon-type", "unresolved-reference", "undeclarable-namespace-prefix", "unresolved-container-pivot", "unresolved-reference-pivot", "duplicate-shape-id", "reference-cycle", "unresolved-svg-viewport", "symbol-cycle", "unresolved-symbol-definition", "duplicate-library-id", "invalid-symbol-viewport", "unresolved-symbol-viewport", "unresolved-symbol-pivot", "unknown-symbol-variant", "ambiguous-symbol-override-target", "unresolved-symbol-override-target", "unexpandable-appearance-stack", "inert-text-path-morph", "inert-variant-transition-content", "unresolved-variant-transition-pivot", "shared-variant-transition-gradient"];
12360
12401
  type RenderDiagnosticCode = (typeof RENDER_DIAGNOSTIC_CODES)[number];
12361
12402
  /** One machine-readable problem reported while producing render output. */
12362
12403
  interface RenderDiagnostic {
@@ -12370,833 +12411,300 @@ interface RenderDiagnostic {
12370
12411
  }
12371
12412
 
12372
12413
  /**
12373
- * Symbol-instance resolution - the single definition of what a
12374
- * `symbol-instance` shape points at.
12375
- *
12376
- * A `symbol-instance` renders as `<use href="#target">` (SVG 2 §5.6), and
12377
- * the target is not always the library def's own id. Variants and
12378
- * per-instance overrides have no representation in the library - a
12379
- * `SymbolLibraryDef` carries every variant's shapes, but which one an
12380
- * instance selects, and what its overrides do to them, is instance state.
12381
- * The renderer therefore MATERIALIZES a `<symbol>` per referenced
12382
- * (def, variant, override) combination under a synthetic id:
12383
- *
12384
- * - no variant, no overrides -> `<def id>` (the library def)
12385
- * - variant `state=hover` -> `<def id>--state_hover`
12386
- * - any overrides -> `<def id>--ovr-<instance id>`
12387
- *
12388
- * Two call sites depend on that mapping and MUST agree on it, or a `<use>`
12389
- * points at a def that was never emitted:
12390
- *
12391
- * 1. `renderShape` (shape-renderers.ts) writes the `<use href>`.
12392
- * 2. `renderSymbolDefs` (svg-renderer.ts) emits the `<symbol>` bodies.
12393
- *
12394
- * They agree because both go through this module. `targetId` and
12395
- * `resolveShapes` are two halves of one decision - the `--ovr-` id is
12396
- * exactly the case where overrides are applied, the `--<variant>` id
12397
- * exactly the case where a variant array replaces `def.shapes` - so they
12398
- * live together and are never re-derived elsewhere.
12399
- *
12400
- * Dependency-free apart from types, so both the shape dispatcher and the
12401
- * document renderer can import it without an import cycle.
12414
+ * Shared transform ownership for serialized container shapes.
12402
12415
  *
12403
- * @packageDocumentation
12416
+ * Imported groups preserve their source transform in `groupData.transform`.
12417
+ * Canonical shape transform state owns the SVG attribute whenever it produces
12418
+ * a non-identity matrix; the imported spelling is only the fallback. Rendering
12419
+ * and analytic tree bounds use this module so the two projections cannot pick
12420
+ * different owners.
12404
12421
  */
12405
12422
 
12406
- type SymbolResolutionDiagnosticCode = 'unknown-symbol-variant' | 'ambiguous-symbol-override-target' | 'unresolved-symbol-override-target';
12407
- interface SymbolResolutionDiagnostic {
12408
- code: SymbolResolutionDiagnosticCode;
12409
- shapeId: string;
12410
- message: string;
12423
+ type ContainerTransformOwner = 'canonical' | 'group-data' | 'none';
12424
+ interface ResolvedContainerTransform {
12425
+ matrix: Affine2D;
12426
+ attribute: string | null;
12427
+ owner: ContainerTransformOwner;
12411
12428
  }
12412
- interface ResolvedSymbolInstanceContent {
12413
- readonly shapes: readonly SerializedShape[];
12414
- readonly requestedVariantKey: string;
12415
- readonly effectiveVariantKey: string;
12416
- readonly candidateTargetId: string;
12417
- readonly materializationKey: string;
12418
- readonly materialized: boolean;
12419
- readonly diagnostics: readonly SymbolResolutionDiagnostic[];
12429
+ interface ContainerContentBounds {
12430
+ minX: number;
12431
+ minY: number;
12432
+ maxX: number;
12433
+ maxY: number;
12420
12434
  }
12421
- /** Resolve variant selection and recursive immutable overrides once for every surface. */
12422
- declare function resolveSymbolInstanceContent(def: SymbolLibraryDef, instance: SerializedShape): ResolvedSymbolInstanceContent;
12423
12435
  /**
12424
- * The `<symbol>` id an instance's `<use href>` resolves to.
12425
- *
12426
- * Mirrors the editor-side `exportSymbolInstances` in
12427
- * `apps/editor/src/canvas/svg-export-finalizer.ts` so an editor export and
12428
- * a headless render of the same document target the same ids.
12429
- *
12430
- * `dedicated` forces the per-instance `--ovr-` id even without
12431
- * overrides — the animated-export policy for instances driven by an
12432
- * `instanceVariant` timeline track, whose injected variant-transition
12433
- * animations must not bleed into sibling instances of the same def. The
12434
- * editor's animated export materializes those dedicated defs and passes
12435
- * the flag here so its `<use href>` retargeting and the def id agree.
12436
+ * Resolve the transform emitted on a container and the equivalent affine.
12437
+ * SVG 2 section 8.5 applies the transform to the container coordinate system.
12436
12438
  */
12437
- declare function symbolInstanceTargetId(instance: SerializedShape, dedicated?: boolean): string;
12439
+ declare function resolveContainerTransform(state: SerializedShapeState, defaultPivot?: Point): ResolvedContainerTransform;
12440
+ /** Whether decomposed rotation, scale, or skew channels need a geometry pivot. */
12441
+ declare function containerTransformNeedsContentPivot(state: SerializedShapeState): boolean;
12442
+ /** Resolve container transform channels around the exact local content center. */
12443
+ declare function resolveContainerTransformFromContentBounds(state: SerializedShapeState, bounds: ContainerContentBounds | null): ResolvedContainerTransform;
12444
+
12438
12445
  /**
12439
- * The shapes that make up the `<symbol>` body an instance resolves to:
12440
- * the selected variant (falling back to `def.shapes`, the default
12441
- * variant, when the key is absent or unknown) with the instance's
12442
- * per-shape overrides merged on top.
12446
+ * Pure geometry functions for computing shape vertices and paths.
12443
12447
  *
12444
- * Overrides are keyed by INNER shape id and merge shallowly into that
12445
- * shape's state, which is what keeps the inner ids - and therefore any
12446
- * shape-derived def ids such as `filter-<id>` - stable across
12447
- * materializations.
12448
+ * These are headless — no DOM required. They take numeric parameters
12449
+ * and return vertex arrays or SVG path-data strings.
12448
12450
  */
12449
- declare function resolveSymbolInstanceShapes(def: SymbolLibraryDef, instance: SerializedShape): SerializedShape[];
12450
12451
 
12451
- type SymbolViewportDiagnosticCode = 'invalid-symbol-length' | 'invalid-symbol-viewbox' | 'unresolved-symbol-viewport';
12452
- interface SymbolViewportDiagnostic {
12453
- code: SymbolViewportDiagnosticCode;
12454
- message: string;
12455
- }
12456
- interface SymbolLengthContext {
12457
- axis: 'x' | 'y' | 'width' | 'height' | 'refX' | 'refY';
12458
- percentBasis?: number;
12459
- }
12460
- interface SymbolViewportHost {
12461
- resolveLength?: (value: string, context: SymbolLengthContext) => number | null;
12462
- }
12463
- interface ResolvedSymbolViewport {
12464
- readonly kind: 'symbol' | 'group';
12465
- readonly renders: boolean;
12466
- readonly useX: number;
12467
- readonly useY: number;
12468
- readonly useAttributes: Readonly<AuthoredUseGeometry>;
12469
- /** Mapping after the use element's own transform. Includes use x/y and def root. */
12470
- readonly contentMatrix: Affine2D;
12471
- readonly childPercentBasis: SvgViewportSize | null;
12472
- readonly viewport: ResolvedSvgViewport | null;
12473
- readonly diagnostics: readonly SymbolViewportDiagnostic[];
12474
- }
12475
12452
  /**
12476
- * Resolve SVG 2 sections 5.4, 5.5.2, 8.2, and 8.6 through 8.8 for one
12477
- * symbol instance. The use translation is on the right of its own transform;
12478
- * this result intentionally starts after that own transform.
12453
+ * Compute equally-spaced vertices around a circle (for triangle, ngon).
12454
+ * Path is centered at origin; caller applies translate(cx, cy).
12479
12455
  */
12480
- declare function resolveSymbolViewport(shape: SerializedShape, def: SymbolLibraryDef, parentViewport?: SvgViewportSize, host?: SymbolViewportHost): ResolvedSymbolViewport;
12481
-
12482
- type SymbolMaterializationDiagnosticCode = SymbolResolutionDiagnosticCode | 'unresolved-symbol-definition' | 'duplicate-library-id' | 'symbol-cycle';
12483
- interface SymbolMaterializationDiagnostic {
12484
- readonly code: SymbolMaterializationDiagnosticCode;
12485
- readonly shapeId: string;
12486
- readonly message: string;
12487
- }
12488
- interface SymbolMaterialization {
12489
- readonly materializationKey: string;
12490
- readonly targetId: string;
12491
- readonly candidateTargetId: string;
12492
- readonly definition: SymbolLibraryDef;
12493
- readonly shapes: readonly SerializedShape[];
12494
- readonly parentViewport?: Readonly<SvgViewportSize>;
12495
- readonly viewport: ResolvedSymbolViewport;
12496
- }
12497
- interface SymbolInstanceMaterialization {
12498
- readonly targetId: string | null;
12499
- readonly definition: SymbolLibraryDef | null;
12500
- readonly materializationKey: string | null;
12501
- /** Final occurrence-local materialization used by every render surface. */
12502
- readonly materialization: SymbolMaterialization | null;
12503
- readonly diagnostics: readonly SymbolMaterializationDiagnostic[];
12504
- readonly parentViewport?: Readonly<SvgViewportSize>;
12505
- readonly viewport: ResolvedSymbolViewport | null;
12506
- }
12507
- interface SymbolMaterializationPlan {
12508
- readonly materializations: readonly SymbolMaterialization[];
12509
- readonly diagnostics: readonly SymbolMaterializationDiagnostic[];
12510
- resolve(instance: SerializedShape): SymbolInstanceMaterialization | undefined;
12511
- }
12512
- interface SymbolMaterializationPlanOptions {
12513
- readonly reservedIds?: ReadonlySet<string>;
12514
- readonly parentViewport?: Readonly<SvgViewportSize>;
12515
- readonly viewportHost?: SymbolViewportHost;
12516
- /**
12517
- * Per-occurrence render policy supplied by a document surface.
12518
- *
12519
- * An `instanceVariant` animation starts from its first keyed state and
12520
- * needs a dedicated target so injected animation never changes sibling
12521
- * instances that otherwise share the same definition.
12522
- */
12523
- readonly instancePolicy?: (instance: SerializedShape) => {
12524
- readonly initialVariantKey?: string;
12525
- readonly dedicated?: boolean;
12526
- } | undefined;
12527
- }
12456
+ declare function computePolygonVertices(sides: number, radius: number, shiftAngleDeg?: number): Point[];
12528
12457
  /**
12529
- * Build the complete SVG 2 section 5.5 shadow-tree materialization plan for
12530
- * one document. Cycle identity is semantic definition + variant + override
12531
- * content, so finite cross-variant recursion remains legal while an actual
12532
- * repeated shadow root is pruned before markup emission.
12458
+ * Compute star vertices with alternating outer/inner radii.
12533
12459
  */
12534
- declare function buildSymbolMaterializationPlan(library: readonly LibraryDef[], roots: readonly SerializedShape[], options?: SymbolMaterializationPlanOptions): SymbolMaterializationPlan;
12535
-
12460
+ declare function computeStarVertices(arms: number, radius: number, innerRadiusPercent: number, shiftAngleDeg?: number): Point[];
12536
12461
  /**
12537
- * Reachability walk over the shapes a rendered document actually paints.
12538
- *
12539
- * `<defs>` emission is reference-driven: a def is emitted only when
12540
- * something in the rendered output points at it with `url(#id)`. Getting
12541
- * that set right means walking more than the top-level shape array,
12542
- * because two nesting mechanisms put `url(#…)` references into the output
12543
- * without a top-level shape carrying them:
12544
- *
12545
- * 1. **Container children.** `<g>`, `<a>`, `<switch>` and nested `<svg>`
12546
- * render `state.children` inline (see `renderContainerChildren` in
12547
- * shape-renderers.ts), so a child's fill / filter / marker reference
12548
- * is live in the document.
12549
- * 2. **Library def contents.** A `<symbol>` or `<marker>` def emits its
12550
- * inner shapes verbatim, so those shapes' references are live too -
12551
- * SVG 2 §5.5 resolves them against the document `<defs>`, not against
12552
- * any def-local scope.
12553
- *
12554
- * Both are transitive: a symbol's inner shape can be a group whose child
12555
- * instantiates another symbol. Reachability is therefore a fixpoint, and
12556
- * a symbol that (directly or indirectly) instantiates itself must not
12557
- * spin - each def's contents are expanded at most once.
12558
- *
12559
- * This module is intentionally dependency-free apart from types so that
12560
- * both `library-renderers.ts` (which emits the defs) and
12561
- * `shape-renderers.ts` (which emits built-in `<marker>` defs) can share
12562
- * one definition of "reachable" without an import cycle. The editor's
12563
- * live `<defs>` reconciler (`MarkerManager`) shares it too, through
12564
- * `forEachShapeInLibraryDefs` - which is what stops the canvas and the
12565
- * exported file from disagreeing about which defs a document needs.
12566
- *
12567
- * @packageDocumentation
12462
+ * Compute cross vertices (12 points forming a plus shape).
12568
12463
  */
12569
-
12464
+ declare function computeCrossVertices(radius: number, armWidthPercent: number, shiftAngleDeg?: number): Point[];
12570
12465
  /**
12571
- * Id → def lookup for the reachability walks.
12572
- *
12573
- * A caller that already owns a keyed store of its defs (the editor's
12574
- * `LibraryRegistry` is exactly such a map) can hand it straight to the
12575
- * walkers instead of paying to rebuild an index per call - which matters
12576
- * because the editor runs `collectReferencedMarkerIds` on the animation
12577
- * path.
12466
+ * Compute arrow vertices (7 points forming an arrow).
12578
12467
  */
12579
- type LibraryIndex = ReadonlyMap<string, LibraryDef>;
12580
- /** Accept either the array form or a prebuilt index. */
12581
- type LibrarySource = readonly LibraryDef[] | LibraryIndex;
12468
+ declare function computeArrowVertices(radius: number, headWidthPercent: number, headLengthPercent: number, shaftWidthPercent: number, shiftAngleDeg?: number): Point[];
12582
12469
  /**
12583
- * Call `visit` once for every shape whose rendered form can appear in the
12584
- * document: each top-level shape, every container descendant, and the
12585
- * inner shapes (plus symbol variants) of the `<symbol>` / `<marker>`
12586
- * library defs those shapes reach.
12587
- *
12588
- * Visit order is deterministic and stable: top-level shapes in document
12589
- * order first, then the transitive frontier discovered from them. Callers
12590
- * whose output order depends on discovery order can rely on that - and on
12591
- * the fact that the top-level prefix is exactly the pre-transitive walk.
12592
- *
12593
- * `visit` may be called more than once for the same shape only if the
12594
- * document itself contains it more than once (e.g. two symbols sharing an
12595
- * inner shape object); accumulating callers should be idempotent.
12470
+ * Compute speech-bubble vertices — square body with a tail protruding at a
12471
+ * chosen angle. The base endpoints lie on the chosen body edge (keeping the
12472
+ * body outline continuous); the tip extends in the direction of `tailAngleDeg`
12473
+ * at length `tailLengthPercent * radius`.
12596
12474
  *
12597
- * @param shapes Top-level shapes of the rendered document.
12598
- * @param library Library defs available for reference resolution. Pass an
12599
- * empty array to walk containers only.
12600
- * @param visit Callback invoked per reachable shape.
12475
+ * The `shiftAngleDeg` rotates the entire shape (body + tail).
12601
12476
  */
12602
- declare function forEachReachableShape(shapes: readonly SerializedShape[], library: LibrarySource, visit: (shape: SerializedShape) => void): void;
12477
+ declare function computeSpeechBubbleVertices(radius: number, tailAngleDeg: number, tailLengthPercent: number, tailWidthPercent: number, shiftAngleDeg?: number): Point[];
12603
12478
  /**
12604
- * Same walk, seeded from library def ids rather than from shapes: visits
12605
- * the contents of each named `<symbol>` / `<marker>` def and everything
12606
- * those contents transitively reach.
12607
- *
12608
- * This is the half of reachability that a LIVE editor cannot answer from
12609
- * its shape registry. Symbol-instance content is materialized as
12610
- * temporary shapes that never enter the registry or the scene graph, so
12611
- * a document-side walk sees the `symbolId` but nothing inside it. Seeding
12612
- * from the def ids the document reaches recovers exactly the missing
12613
- * frontier, and - because it is the same engine the export collector runs
12614
- * - recovers it with identical nesting, variant, and cycle semantics.
12615
- *
12616
- * Ids that are absent from `library`, or that name a def with no contents
12617
- * (paint servers, filters), are skipped.
12479
+ * Compute lightning-bolt vertices — a zigzag ribbon from top tip to bottom tip.
12480
+ * `boltSegments` line segments make the zigzag (alternating x offsets of
12481
+ * `boltJaggednessPercent * radius`); the ribbon is `boltWidthPercent * radius`
12482
+ * wide, perpendicular to each segment's bisector normal.
12618
12483
  */
12619
- declare function forEachShapeInLibraryDefs(rootDefIds: Iterable<string>, library: LibrarySource, visit: (shape: SerializedShape) => void): void;
12484
+ declare function computeLightningVertices(radius: number, boltSegments: number, boltJaggednessPercent: number, boltWidthPercent: number, shiftAngleDeg?: number): Point[];
12620
12485
  /**
12621
- * Marker ids a single shape's state puts into the rendered output: the
12622
- * three explicit `marker-*` refs, plus the built-in ids the legacy
12623
- * `startEndpoint` / `endEndpoint` dropdowns resolve to (`Line` and
12624
- * `Path` fold those into their painted refs - see
12625
- * `endpointMarkerAttributes` in codegen/helpers.ts and
12626
- * `Line.getEffectiveMarkerRefs()` in the editor).
12627
- *
12628
- * One definition, shared by the export collector and by the editor's live
12629
- * `<defs>` reconciler, so the two cannot disagree about what a given
12630
- * state means.
12486
+ * Compute heart path — two cubic Béziers meeting at the bottom tip and the
12487
+ * upper cleft. `lobeRadiusPercent` controls the horizontal extent of the two
12488
+ * top lobes; `cleftDepthPercent` controls how deep the central dip sits.
12631
12489
  */
12632
- declare function forEachMarkerRefInState(state: SerializedShape['state'] | Record<string, unknown> | undefined, visit: (markerId: string) => void): void;
12633
- /** The built-in `<marker>` id a legacy endpoint name resolves to. */
12634
- declare function legacyEndpointMarkerId(endpoint: string): string;
12490
+ declare function computeHeartPath(radius: number, lobeRadiusPercent: number, cleftDepthPercent: number, shiftAngleDeg?: number): string;
12635
12491
  /**
12636
- * Library def ids a single shape's state references: fill / stroke paint
12637
- * servers, the filter chain, the marker refs, and the symbol it
12638
- * instantiates.
12492
+ * Compute cloud path — a classic cartoon-cloud silhouette built as the outer
12493
+ * boundary of N overlapping circles placed around an elongated ellipse.
12494
+ * Circles go all the way around (top, sides, bottom), and the silhouette is
12495
+ * closed by walking each circle's outer arc via the intersection with its
12496
+ * next neighbor. Every transition between bumps is tangent-smooth — no flat
12497
+ * edges, no corners.
12639
12498
  *
12640
- * Mirrors the reference set `collectReferencedLibraryDefs` scans per
12641
- * shape, including the legacy fallbacks - an inline `fillGradient`
12642
- * payload with no `fillLibraryId` still names a def, and a populated
12643
- * `filters` array with no `filterLibraryIds` names the shape-derived
12644
- * `filter-<shapeId>`. It reports RAW ids and makes no library lookup, so
12645
- * a caller can use it against a live document whose defs are stored
12646
- * somewhere other than a `LibraryDef[]`.
12499
+ * `cloudBumps` (3..8) — number of bump circles forming the silhouette.
12500
+ * `cloudPuffinessPercent` (40..80) — drives bump overlap; higher values
12501
+ * smooth the underside; lower values leave the bumps more pronounced.
12502
+ */
12503
+ declare function computeCloudPath(radius: number, cloudBumps: number, cloudPuffinessPercent: number, shiftAngleDeg?: number): string;
12504
+ /**
12505
+ * Convert an array of vertices to an SVG path string.
12506
+ * Supports optional rounded corners via quadratic Bézier.
12507
+ */
12508
+ declare function verticesToPath(vertices: Point[], cornerRadius?: number, radius?: number): string;
12509
+ /**
12510
+ * Generate SVG path for a ring (two concentric circles).
12511
+ */
12512
+ declare function computeRingPath(radius: number, innerRadiusPercent: number, fillRule?: 'nonzero' | 'evenodd'): string;
12513
+ /**
12514
+ * Generate SVG path for an Archimedean spiral.
12515
+ */
12516
+ declare function computeSpiralPath(radius: number, turns: number, thicknessPercent: number, spiralDirection?: number, shiftAngleDeg?: number): string;
12517
+ declare function computeGearVertices(teeth: number, radius: number, toothDepthPercent: number, shiftAngleDeg?: number): Point[];
12518
+ /**
12519
+ * Generate full gear path including optional center hole.
12520
+ */
12521
+ declare function computeGearPath(teeth: number, radius: number, toothDepthPercent: number, cornerRadius?: number, holeRadiusPercent?: number, fillRule?: 'nonzero' | 'evenodd', shiftAngleDeg?: number): string;
12522
+ type CornerShape = 'round' | 'bevel' | 'notch' | 'scoop';
12523
+ /**
12524
+ * Generate SVG path for a rectangle with per-corner radius and shape.
12525
+ * Returns null if all corners are simple (use <rect> instead).
12526
+ */
12527
+ declare function computeRectanglePath(x: number, y: number, width: number, height: number, cornerRadius: number, cornerShape?: CornerShape, cornerMode?: 'uniform' | 'non-uniform', perCorner?: {
12528
+ radiusTL?: number;
12529
+ radiusTR?: number;
12530
+ radiusBR?: number;
12531
+ radiusBL?: number;
12532
+ shapeTL?: CornerShape;
12533
+ shapeTR?: CornerShape;
12534
+ shapeBR?: CornerShape;
12535
+ shapeBL?: CornerShape;
12536
+ }): string | null;
12537
+ /** The six flowchart shapes that fit an axis-aligned (x, y, w, h) box. */
12538
+ type FlowchartBoxType = 'diamond' | 'parallelogram' | 'trapezoid' | 'terminator' | 'cylinder' | 'document-shape';
12539
+ /** Per-shape knob, expressed as a percentage of width or height. */
12540
+ interface FlowchartBoxParams {
12541
+ /** Parallelogram: horizontal slant as a percentage of width. */
12542
+ slantPercent?: number;
12543
+ /** Trapezoid: top edge width as a percentage of the bottom edge. */
12544
+ topWidthPercent?: number;
12545
+ /** Cylinder: elliptical cap height as a percentage of total height. */
12546
+ capHeightPercent?: number;
12547
+ /** Document: bottom wave amplitude as a percentage of height. */
12548
+ waveAmplitudePercent?: number;
12549
+ }
12550
+ /**
12551
+ * SVG path data for a flowchart box, in absolute canvas coordinates.
12647
12552
  *
12648
- * Deliberately NOT shared with `collectReferencedLibraryDefs` itself:
12649
- * that function has to decide, per id, between emitting the library
12650
- * entry and synthesizing a transient def from the inline payload, and
12651
- * the order in which it resolves the two is observable in the emitted
12652
- * `<defs>`. Keeping the two separate leaves that byte-order contract
12653
- * untouched; that they agree on the reference SET is enforced by test
12654
- * rather than by shared code.
12553
+ * Kept numerically identical to the editor's `generatePath()` methods in
12554
+ * `apps/editor/src/shapes/flowchart-shapes.ts` and `diamond.ts` so a
12555
+ * headless render and an editor export of the same document produce the
12556
+ * same silhouette. The defaults below mirror the editor's property
12557
+ * getters, which are what a document authored before a knob existed
12558
+ * falls back to.
12655
12559
  */
12656
- declare function forEachLibraryRefInState(state: SerializedShape['state'] | Record<string, unknown> | undefined, shapeId: string, visit: (libraryId: string) => void): void;
12560
+ declare function computeFlowchartBoxPath(type: FlowchartBoxType, x: number, y: number, width: number, height: number, params?: FlowchartBoxParams): string;
12657
12561
  /**
12658
- * Marker references found by walking a document, split the way
12659
- * `renderBuiltinMarkerDefs` consumes them:
12660
- * - `ids`: raw marker ids from `state.markerStart` / `markerMid` /
12661
- * `markerEnd` - built-in (`mkr-builtin-arrow`, `line-marker-arrow`)
12662
- * or user marker ids.
12663
- * - `legacyEndpoints`: endpoint names from `state.startEndpoint` /
12664
- * `endEndpoint` (e.g. `'arrow'`), which `Line` / `Path` emit as a
12665
- * shortcut to built-in markers without explicit `marker-*` attrs.
12562
+ * Structural shape of one point in a spline/path model. Deliberately
12563
+ * looser than the `PathPoint` document type (string `pointType` /
12564
+ * `segmentType`) so editor and SDK point arrays both satisfy it.
12666
12565
  */
12667
- interface MarkerReferenceSets {
12668
- ids: Set<string>;
12669
- legacyEndpoints: Set<string>;
12566
+ interface SplinePointInput {
12567
+ x: number;
12568
+ y: number;
12569
+ handleIn?: Point;
12570
+ handleOut?: Point;
12571
+ pointType?: string;
12572
+ isSubpathStart?: boolean;
12573
+ subpathClosed?: boolean;
12574
+ moveRelative?: boolean;
12575
+ segmentRelative?: boolean;
12576
+ segmentType?: string;
12577
+ arcParams?: ArcParams;
12670
12578
  }
12671
12579
  /**
12672
- * Walk a document for marker references. Reachability, not just the top
12673
- * level: container children render inline and `<symbol>` / `<marker>`
12674
- * inner shapes emit verbatim, so a `marker-start="url(#line-marker-arrow)"`
12675
- * written from inside a symbol needs its built-in def as much as a
12676
- * top-level one does.
12580
+ * Compute SVG path data from spline points.
12677
12581
  */
12678
- declare function collectMarkerReferences(shapes: readonly SerializedShape[], library?: LibrarySource): MarkerReferenceSets;
12679
12582
  /**
12680
- * Every `<marker>` id a rendered document needs a def for, as one flat
12681
- * set: the raw `marker-*` refs plus the built-in ids the legacy endpoint
12682
- * dropdowns resolve to.
12583
+ * How the serializer treats the shorthand path commands whose validity
12584
+ * depends on measured geometry (`H`/`V` for axis-aligned lines, `S`/`T`
12585
+ * for reflected control points).
12683
12586
  *
12684
- * This is the reference answer to "which markers must be in `<defs>`?".
12685
- * The editor's live reconciler computes the same set incrementally from
12686
- * its model; that the two agree is what keeps canvas and export from
12687
- * diverging.
12587
+ * - `'preserve'` (default) — emit the shorthand whenever the geometry
12588
+ * satisfies it. This is what authored path data round-trips through.
12589
+ * - `'expand'` — always emit the long form (`L`, `C`, `Q`). Required
12590
+ * when serializing a sequence of `d` values that must interpolate:
12591
+ * SVG only animates between path values with identical command
12592
+ * structure (SVG 1.1 §19.2.15.3), and a vertex crossing into or out of
12593
+ * axis alignment silently changes which shorthand applies, which would
12594
+ * break the animation partway through.
12688
12595
  */
12689
- declare function collectReferencedMarkerIds(shapes: readonly SerializedShape[], library: LibrarySource): Set<string>;
12690
-
12691
- type PresentationValueReader = (key: string) => unknown;
12692
- interface PresentationSemanticContext {
12693
- shapeId: string;
12694
- includeAuthoredAttributes?: boolean;
12695
- includeContainerPresentation?: boolean;
12696
- retainCssAnimationDeclarations?: boolean;
12697
- /**
12698
- * The live editor projects resolved static stylesheet values inline so its
12699
- * structural scaffolding cannot alter selector matching. Serialized SVG
12700
- * renderers leave both stylesheet channels to the canonical stylesheet.
12701
- */
12702
- projectStaticStylesheetValues?: boolean;
12703
- }
12704
- interface PresentationWrite {
12705
- channel: 'attribute' | 'style';
12706
- name: string;
12707
- value: string | number | null;
12708
- allowEmpty?: boolean;
12709
- ifAbsent?: boolean;
12710
- }
12711
- interface PresentationSemanticEntry {
12712
- id: string;
12713
- keys: readonly string[];
12714
- project: (read: PresentationValueReader, context: PresentationSemanticContext) => readonly PresentationWrite[];
12596
+ type PathShorthandPolicy = 'preserve' | 'expand';
12597
+ declare function computeSplinePath(points: readonly SplinePointInput[], curveType: string, closed?: boolean, tension?: number, arcParams?: readonly ArcParams[], shorthand?: PathShorthandPolicy): string;
12598
+ /**
12599
+ * Catmull-Rom spline emitted as cubic Bézier segments.
12600
+ *
12601
+ * This is an exact change of basis, NOT an approximation. Each
12602
+ * alpha-parameterized Catmull-Rom segment is a cubic polynomial in its
12603
+ * local parameter (Barry-Goldman), so the Bernstein basis represents it
12604
+ * with zero geometric loss at every alpha - verified against a direct
12605
+ * Barry-Goldman evaluation to ~1e-13 user units for alpha ∈ {0, ¼, ½, ¾, 1}.
12606
+ *
12607
+ * `C` is also the only option that renders: the Catmull-Rom path command
12608
+ * `R` exists solely in the SVG Paths Editor's Draft §4.8 and is
12609
+ * unimplemented in Blink, Gecko, and WebKit, all of which treat it as a
12610
+ * path-data error and draw nothing past it. Core's structured path parser
12611
+ * accepts `R`/`r` only through its explicit SVGSketch extension policy so
12612
+ * third-party editor-draft files can be canonicalized before persistence.)
12613
+ *
12614
+ * Pure implementation (no d3 dependency).
12615
+ */
12616
+ interface CatmullRomCubicSegment {
12617
+ startIndex: number;
12618
+ endIndex: number;
12619
+ control1: Point;
12620
+ control2: Point;
12715
12621
  }
12622
+ /** Exact cubic control points for one contiguous Catmull-Rom run. */
12623
+ declare function computeCatmullRomSegments(points: readonly SplinePointInput[], closed: boolean, tension: number): CatmullRomCubicSegment[];
12716
12624
  /**
12717
- * Ordered common-presentation semantics shared by headless rendering,
12718
- * component code generation, and the editor's incremental apply layer.
12625
+ * Compute a dash-array string for a given line style.
12719
12626
  *
12720
- * Order is part of the contract. The dash row follows linecap so dotted
12721
- * style can make the final cap round, and unmodeled authored attributes
12722
- * remain the final row so typed state keeps one deterministic owner.
12627
+ * @returns A `stroke-dasharray` value like `"8 4"`, or `null` for solid lines.
12723
12628
  */
12724
- declare const PRESENTATION_SEMANTICS: readonly [{
12725
- readonly id: "fill";
12726
- readonly keys: readonly ["fillColor", "fillType", "fillGradient", "fillLibraryId", "inheritFill", "authoredFillPaint"];
12727
- readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
12728
- }, {
12729
- readonly id: "element-opacity";
12730
- readonly keys: readonly ["opacity", "preserveOpacity"];
12731
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12732
- }, {
12733
- readonly id: "fill-opacity";
12734
- readonly keys: readonly ["fillOpacity", "preserveFillOpacity", "fillType", "fillGradient", "inheritFill"];
12735
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12736
- }, {
12737
- readonly id: "fill-rule";
12738
- readonly keys: readonly ["fillRule"];
12739
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12740
- }, {
12741
- readonly id: "stroke";
12742
- readonly keys: readonly ["borderColor", "strokeType", "strokeGradient", "strokeLibraryId", "inheritStroke", "authoredStrokePaint"];
12743
- readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
12744
- }, {
12745
- readonly id: "stroke-width";
12746
- readonly keys: readonly ["borderWidth"];
12747
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12748
- }, {
12749
- readonly id: "stroke-opacity";
12750
- readonly keys: readonly ["strokeOpacity", "preserveStrokeOpacity", "strokeType", "strokeGradient", "inheritStroke"];
12751
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12752
- }, {
12753
- readonly id: "blend-mode";
12754
- readonly keys: readonly ["blendMode"];
12755
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12756
- }, {
12757
- readonly id: "paint-order";
12758
- readonly keys: readonly ["paintOrder"];
12759
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12760
- }, {
12761
- readonly id: "inline-style";
12762
- readonly keys: readonly ["inlineStyle"];
12763
- readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
12764
- }, {
12765
- readonly id: "markers";
12766
- readonly keys: readonly ["markerStart", "markerMid", "markerEnd"];
12767
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12768
- }, {
12769
- readonly id: "stroke-linejoin";
12770
- readonly keys: readonly ["strokeLinejoin"];
12771
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12772
- }, {
12773
- readonly id: "stroke-linecap";
12774
- readonly keys: readonly ["strokeLinecap"];
12775
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12776
- }, {
12777
- readonly id: "stroke-miterlimit";
12778
- readonly keys: readonly ["strokeMiterlimit"];
12779
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12780
- }, {
12781
- readonly id: "stroke-dasharray";
12782
- readonly keys: readonly ["lineStyle", "dashLength", "gapLength", "strokeDasharray", "strokeLinecap"];
12783
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12784
- }, {
12785
- readonly id: "stroke-dashoffset";
12786
- readonly keys: readonly ["dashOffset"];
12787
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12788
- }, {
12789
- readonly id: "shape-rendering";
12790
- readonly keys: readonly ["shapeRendering"];
12791
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12792
- }, {
12793
- readonly id: "text-rendering";
12794
- readonly keys: readonly ["textRendering"];
12795
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12796
- }, {
12797
- readonly id: "image-rendering";
12798
- readonly keys: readonly ["imageRendering"];
12799
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12800
- }, {
12801
- readonly id: "color-rendering";
12802
- readonly keys: readonly ["colorRendering"];
12803
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12804
- }, {
12805
- readonly id: "color-interpolation";
12806
- readonly keys: readonly ["colorInterpolation"];
12807
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12808
- }, {
12809
- readonly id: "filter";
12810
- readonly keys: readonly ["filters", "filterLibraryIds"];
12811
- readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
12812
- }, {
12813
- readonly id: "system-language";
12814
- readonly keys: readonly ["systemLanguage"];
12815
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12816
- }, {
12817
- readonly id: "required-extensions";
12818
- readonly keys: readonly ["requiredExtensions"];
12819
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12820
- }, {
12821
- readonly id: "vector-effect";
12822
- readonly keys: readonly ["vectorEffect"];
12823
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12824
- }, {
12825
- readonly id: "visibility";
12826
- readonly keys: readonly ["visibility"];
12827
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12828
- }, {
12829
- readonly id: "display";
12830
- readonly keys: readonly ["displayAttr"];
12831
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12832
- }, {
12833
- readonly id: "visible";
12834
- readonly keys: readonly ["visible"];
12835
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12836
- }, {
12837
- readonly id: "path-length";
12838
- readonly keys: readonly ["pathLength"];
12839
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12840
- }, {
12841
- readonly id: "transform-box";
12842
- readonly keys: readonly ["transformBox"];
12843
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12844
- }, {
12845
- readonly id: "transform";
12846
- readonly keys: readonly ["rotation", "transformMatrix", "translateX", "translateY", "skewX", "skewY", "scaleX", "scaleY", "customPivot", "rawTransform"];
12847
- readonly project: () => never[];
12848
- }, {
12849
- readonly id: "locked";
12850
- readonly keys: readonly ["locked"];
12851
- readonly project: () => never[];
12852
- }, {
12853
- readonly id: "metadata";
12854
- readonly keys: readonly ["metadata"];
12855
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12856
- }, {
12857
- readonly id: "css-clip-path";
12858
- readonly keys: readonly ["cssClipPath"];
12859
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12860
- }, {
12861
- readonly id: "css-mask-properties";
12862
- readonly keys: readonly ["cssMaskProperties"];
12863
- readonly project: (read: PresentationValueReader) => PresentationWrite[];
12864
- }, {
12865
- readonly id: "container-presentation";
12866
- readonly keys: readonly ["containerPresentation"];
12867
- readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
12868
- }, {
12869
- readonly id: "authored-attributes";
12870
- readonly keys: readonly ["authoredAttributes"];
12871
- readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
12872
- }];
12873
- type PresentationSemanticId = (typeof PRESENTATION_SEMANTICS)[number]['id'];
12874
- declare function projectPresentationEntry(entry: PresentationSemanticEntry, read: PresentationValueReader, context: PresentationSemanticContext): readonly PresentationWrite[];
12875
- declare function projectPresentation(read: PresentationValueReader, context: PresentationSemanticContext): PresentationWrite[];
12876
- declare function serializedPresentationReader(state: SerializedShapeState): PresentationValueReader;
12877
-
12878
- type DefinitionAttribute = readonly [name: string, value: string | number];
12879
- interface GradientStopEnvelope {
12880
- attributes: readonly DefinitionAttribute[];
12881
- }
12882
- interface GradientDefinitionEnvelope {
12883
- element: 'linearGradient' | 'radialGradient';
12884
- attributes: readonly DefinitionAttribute[];
12885
- stops: readonly GradientStopEnvelope[];
12886
- }
12887
- interface PatternDefinitionEnvelope {
12888
- attributes: readonly DefinitionAttribute[];
12889
- content: string;
12890
- }
12891
- type FilterColorInterpolation = 'auto' | 'sRGB' | 'linearRGB';
12892
- type FilterUnits = 'userSpaceOnUse' | 'objectBoundingBox';
12893
- interface FilterElementAttrs {
12894
- colorInterpolation?: FilterColorInterpolation | null;
12895
- filterUnits?: FilterUnits;
12896
- primitiveUnits?: FilterUnits;
12897
- x?: string;
12898
- y?: string;
12899
- width?: string;
12900
- height?: string;
12901
- }
12902
- interface FilterEnvelopeBase {
12903
- attributes: readonly DefinitionAttribute[];
12904
- }
12905
- interface RawFilterEnvelope extends FilterEnvelopeBase {
12906
- kind: 'raw';
12907
- content: string;
12908
- }
12909
- interface PrimitiveChainFilterEnvelope extends FilterEnvelopeBase {
12910
- kind: 'primitive-chain';
12911
- chain: SvgPrimitiveChainFilter;
12912
- }
12913
- interface GeneratedFilterEnvelope extends FilterEnvelopeBase {
12914
- kind: 'generated';
12915
- filters: readonly ShapeFilter[];
12916
- primitiveUnits: FilterUnits;
12917
- }
12918
- type FilterDefinitionEnvelope = RawFilterEnvelope | PrimitiveChainFilterEnvelope | GeneratedFilterEnvelope;
12919
- /**
12920
- * Build the one portable pattern definition consumed by static rendering and
12921
- * platform projections. SVG 2 section 14.3 keeps tile lengths on the pattern
12922
- * resource, so valid source spellings remain authoritative over the numeric
12923
- * editor projection.
12924
- */
12925
- declare function patternDefinitionEnvelope(id: string, pattern: PatternFill): PatternDefinitionEnvelope;
12926
- declare function linearGradientEnvelope(id: string, gradient: LinearGradient): GradientDefinitionEnvelope;
12927
- declare function radialGradientEnvelope(id: string, gradient: RadialGradient): GradientDefinitionEnvelope;
12928
- declare function filterChainExtendsBounds(filters: readonly ShapeFilter[]): boolean;
12929
- declare function filterDefinitionEnvelope(filterId: string, filters: readonly ShapeFilter[], attrs?: FilterElementAttrs): FilterDefinitionEnvelope | null;
12629
+ declare function computeDashArray(style: string, dashLength: number, gapLength: number): string | null;
12930
12630
 
12931
12631
  /**
12932
- * Shared transform ownership for serialized container shapes.
12632
+ * Analytic bounds for SVG path geometry.
12933
12633
  *
12934
- * Imported groups preserve their source transform in `groupData.transform`.
12935
- * Canonical shape transform state owns the SVG attribute whenever it produces
12936
- * a non-identity matrix; the imported spelling is only the fallback. Rendering
12937
- * and analytic tree bounds use this module so the two projections cannot pick
12938
- * different owners.
12634
+ * Computes the FILL-geometry axis-aligned bounding box of path data,
12635
+ * the same rectangle `SVGGraphicsElement.getBBox()` reports (SVG 2 section 8.10:
12636
+ * fill geometry only, with no stroke, no markers, no clip, and no
12637
+ * element transform) with no DOM, no layout, and no measurement. Callers may
12638
+ * supply an affine map to request the exact box in another user coordinate
12639
+ * system, as defined by SVG 2 sections 8.2, 8.6, 8.7, and 8.10.
12640
+ *
12641
+ * ## Shared command geometry
12642
+ *
12643
+ * `computeSplinePath` in `./geometry` is the single source of truth for
12644
+ * what a point model *denotes*: it resolves curve type (linear, cubic,
12645
+ * quadratic, arc, catmull-rom, basis, mixed), subpath breaks, closing
12646
+ * segments, and the H/V/S/T shorthand demotions. Deriving bounds from a
12647
+ * second, independent traversal of the point model would duplicate those
12648
+ * rules. The model entry point consumes the serializer's numeric command
12649
+ * stream directly, avoiding text construction and parsing. Dedicated
12650
+ * whole-path generators retain the text route. Both routes use the same
12651
+ * extrema kernel and preserve the geometry represented by the rendered d.
12652
+ *
12653
+ * `pathDataBounds` is equally useful on its own for imported or
12654
+ * hand-authored `d` strings, so both layers are public.
12655
+ *
12656
+ * ## Precision
12657
+ *
12658
+ * Cubic and quadratic extrema are exact (roots of the derivative).
12659
+ * Elliptical-arc extrema are exact for the true ellipse. Browsers
12660
+ * decompose arcs into ≤90° cubic Bézier approximations before measuring
12661
+ * (Blink: `SVGPathNormalizer::DecomposeArcToCubic`), so a browser's
12662
+ * `getBBox` can differ from the exact ellipse extent by the
12663
+ * approximation error of that decomposition — bounded by roughly
12664
+ * 2.7e-4 · r, and zero whenever the extremum lands on a segment
12665
+ * endpoint or midpoint (the classic k = 4/3·tan(Δθ/4) construction
12666
+ * interpolates both). The exact value is the spec-correct one, so this
12667
+ * module reports it rather than reproducing the browser's
12668
+ * approximation.
12939
12669
  */
12940
12670
 
12941
- type ContainerTransformOwner = 'canonical' | 'group-data' | 'none';
12942
- interface ResolvedContainerTransform {
12943
- matrix: Affine2D;
12944
- attribute: string | null;
12945
- owner: ContainerTransformOwner;
12946
- }
12947
- interface ContainerContentBounds {
12671
+ /** Axis-aligned rectangle in the coordinate system of the path data. */
12672
+ interface PathBoundsRect {
12948
12673
  minX: number;
12949
12674
  minY: number;
12950
12675
  maxX: number;
12951
12676
  maxY: number;
12952
12677
  }
12678
+ /** One-dimensional interval, the per-axis result of a curve extent. */
12679
+ interface Extent1D {
12680
+ min: number;
12681
+ max: number;
12682
+ }
12953
12683
  /**
12954
- * Resolve the transform emitted on a container and the equivalent affine.
12955
- * SVG 2 section 8.5 applies the transform to the container coordinate system.
12684
+ * Center parameterization of an elliptical arc — the form in which the
12685
+ * arc's extrema are solvable. See SVG 2 Appendix B.2.2.
12956
12686
  */
12957
- declare function resolveContainerTransform(state: SerializedShapeState, defaultPivot?: Point): ResolvedContainerTransform;
12958
- /** Whether decomposed rotation, scale, or skew channels need a geometry pivot. */
12959
- declare function containerTransformNeedsContentPivot(state: SerializedShapeState): boolean;
12960
- /** Resolve container transform channels around the exact local content center. */
12961
- declare function resolveContainerTransformFromContentBounds(state: SerializedShapeState, bounds: ContainerContentBounds | null): ResolvedContainerTransform;
12962
-
12687
+ interface ArcCenterParameterization {
12688
+ /** Ellipse center, user space. */
12689
+ cx: number;
12690
+ cy: number;
12691
+ /** Radii after the B.2.5 sign and out-of-range corrections. */
12692
+ rx: number;
12693
+ ry: number;
12694
+ /** X-axis rotation, RADIANS (the endpoint form carries degrees). */
12695
+ phi: number;
12696
+ /** Start angle, radians. */
12697
+ theta1: number;
12698
+ /** Swept angle, radians; signed — negative sweeps run counterclockwise. */
12699
+ deltaTheta: number;
12700
+ }
12963
12701
  /**
12964
- * Pure geometry functions for computing shape vertices and paths.
12702
+ * Exact extent of one axis of a cubic Bézier.
12965
12703
  *
12966
- * These are headless — no DOM required. They take numeric parameters
12967
- * and return vertex arrays or SVG path-data strings.
12968
- */
12969
-
12970
- /**
12971
- * Compute equally-spaced vertices around a circle (for triangle, ngon).
12972
- * Path is centered at origin; caller applies translate(cx, cy).
12973
- */
12974
- declare function computePolygonVertices(sides: number, radius: number, shiftAngleDeg?: number): Point[];
12975
- /**
12976
- * Compute star vertices with alternating outer/inner radii.
12977
- */
12978
- declare function computeStarVertices(arms: number, radius: number, innerRadiusPercent: number, shiftAngleDeg?: number): Point[];
12979
- /**
12980
- * Compute cross vertices (12 points forming a plus shape).
12981
- */
12982
- declare function computeCrossVertices(radius: number, armWidthPercent: number, shiftAngleDeg?: number): Point[];
12983
- /**
12984
- * Compute arrow vertices (7 points forming an arrow).
12985
- */
12986
- declare function computeArrowVertices(radius: number, headWidthPercent: number, headLengthPercent: number, shaftWidthPercent: number, shiftAngleDeg?: number): Point[];
12987
- /**
12988
- * Compute speech-bubble vertices — square body with a tail protruding at a
12989
- * chosen angle. The base endpoints lie on the chosen body edge (keeping the
12990
- * body outline continuous); the tip extends in the direction of `tailAngleDeg`
12991
- * at length `tailLengthPercent * radius`.
12992
- *
12993
- * The `shiftAngleDeg` rotates the entire shape (body + tail).
12994
- */
12995
- declare function computeSpeechBubbleVertices(radius: number, tailAngleDeg: number, tailLengthPercent: number, tailWidthPercent: number, shiftAngleDeg?: number): Point[];
12996
- /**
12997
- * Compute lightning-bolt vertices — a zigzag ribbon from top tip to bottom tip.
12998
- * `boltSegments` line segments make the zigzag (alternating x offsets of
12999
- * `boltJaggednessPercent * radius`); the ribbon is `boltWidthPercent * radius`
13000
- * wide, perpendicular to each segment's bisector normal.
13001
- */
13002
- declare function computeLightningVertices(radius: number, boltSegments: number, boltJaggednessPercent: number, boltWidthPercent: number, shiftAngleDeg?: number): Point[];
13003
- /**
13004
- * Compute heart path — two cubic Béziers meeting at the bottom tip and the
13005
- * upper cleft. `lobeRadiusPercent` controls the horizontal extent of the two
13006
- * top lobes; `cleftDepthPercent` controls how deep the central dip sits.
13007
- */
13008
- declare function computeHeartPath(radius: number, lobeRadiusPercent: number, cleftDepthPercent: number, shiftAngleDeg?: number): string;
13009
- /**
13010
- * Compute cloud path — a classic cartoon-cloud silhouette built as the outer
13011
- * boundary of N overlapping circles placed around an elongated ellipse.
13012
- * Circles go all the way around (top, sides, bottom), and the silhouette is
13013
- * closed by walking each circle's outer arc via the intersection with its
13014
- * next neighbor. Every transition between bumps is tangent-smooth — no flat
13015
- * edges, no corners.
13016
- *
13017
- * `cloudBumps` (3..8) — number of bump circles forming the silhouette.
13018
- * `cloudPuffinessPercent` (40..80) — drives bump overlap; higher values
13019
- * smooth the underside; lower values leave the bumps more pronounced.
13020
- */
13021
- declare function computeCloudPath(radius: number, cloudBumps: number, cloudPuffinessPercent: number, shiftAngleDeg?: number): string;
13022
- /**
13023
- * Convert an array of vertices to an SVG path string.
13024
- * Supports optional rounded corners via quadratic Bézier.
13025
- */
13026
- declare function verticesToPath(vertices: Point[], cornerRadius?: number, radius?: number): string;
13027
- /**
13028
- * Generate SVG path for a ring (two concentric circles).
13029
- */
13030
- declare function computeRingPath(radius: number, innerRadiusPercent: number, fillRule?: 'nonzero' | 'evenodd'): string;
13031
- /**
13032
- * Generate SVG path for an Archimedean spiral.
13033
- */
13034
- declare function computeSpiralPath(radius: number, turns: number, thicknessPercent: number, spiralDirection?: number, shiftAngleDeg?: number): string;
13035
- declare function computeGearVertices(teeth: number, radius: number, toothDepthPercent: number, shiftAngleDeg?: number): Point[];
13036
- /**
13037
- * Generate full gear path including optional center hole.
13038
- */
13039
- declare function computeGearPath(teeth: number, radius: number, toothDepthPercent: number, cornerRadius?: number, holeRadiusPercent?: number, fillRule?: 'nonzero' | 'evenodd', shiftAngleDeg?: number): string;
13040
- type CornerShape = 'round' | 'bevel' | 'notch' | 'scoop';
13041
- /**
13042
- * Generate SVG path for a rectangle with per-corner radius and shape.
13043
- * Returns null if all corners are simple (use <rect> instead).
13044
- */
13045
- declare function computeRectanglePath(x: number, y: number, width: number, height: number, cornerRadius: number, cornerShape?: CornerShape, cornerMode?: 'uniform' | 'non-uniform', perCorner?: {
13046
- radiusTL?: number;
13047
- radiusTR?: number;
13048
- radiusBR?: number;
13049
- radiusBL?: number;
13050
- shapeTL?: CornerShape;
13051
- shapeTR?: CornerShape;
13052
- shapeBR?: CornerShape;
13053
- shapeBL?: CornerShape;
13054
- }): string | null;
13055
- /** The six flowchart shapes that fit an axis-aligned (x, y, w, h) box. */
13056
- type FlowchartBoxType = 'diamond' | 'parallelogram' | 'trapezoid' | 'terminator' | 'cylinder' | 'document-shape';
13057
- /** Per-shape knob, expressed as a percentage of width or height. */
13058
- interface FlowchartBoxParams {
13059
- /** Parallelogram: horizontal slant as a percentage of width. */
13060
- slantPercent?: number;
13061
- /** Trapezoid: top edge width as a percentage of the bottom edge. */
13062
- topWidthPercent?: number;
13063
- /** Cylinder: elliptical cap height as a percentage of total height. */
13064
- capHeightPercent?: number;
13065
- /** Document: bottom wave amplitude as a percentage of height. */
13066
- waveAmplitudePercent?: number;
13067
- }
13068
- /**
13069
- * SVG path data for a flowchart box, in absolute canvas coordinates.
13070
- *
13071
- * Kept numerically identical to the editor's `generatePath()` methods in
13072
- * `apps/editor/src/shapes/flowchart-shapes.ts` and `diamond.ts` so a
13073
- * headless render and an editor export of the same document produce the
13074
- * same silhouette. The defaults below mirror the editor's property
13075
- * getters, which are what a document authored before a knob existed
13076
- * falls back to.
13077
- */
13078
- declare function computeFlowchartBoxPath(type: FlowchartBoxType, x: number, y: number, width: number, height: number, params?: FlowchartBoxParams): string;
13079
- /**
13080
- * Structural shape of one point in a spline/path model. Deliberately
13081
- * looser than the `PathPoint` document type (string `pointType` /
13082
- * `segmentType`) so editor and SDK point arrays both satisfy it.
13083
- */
13084
- interface SplinePointInput {
13085
- x: number;
13086
- y: number;
13087
- handleIn?: Point;
13088
- handleOut?: Point;
13089
- pointType?: string;
13090
- isSubpathStart?: boolean;
13091
- subpathClosed?: boolean;
13092
- moveRelative?: boolean;
13093
- segmentRelative?: boolean;
13094
- segmentType?: string;
13095
- arcParams?: ArcParams;
13096
- }
13097
- /**
13098
- * Compute SVG path data from spline points.
13099
- */
13100
- /**
13101
- * How the serializer treats the shorthand path commands whose validity
13102
- * depends on measured geometry (`H`/`V` for axis-aligned lines, `S`/`T`
13103
- * for reflected control points).
13104
- *
13105
- * - `'preserve'` (default) — emit the shorthand whenever the geometry
13106
- * satisfies it. This is what authored path data round-trips through.
13107
- * - `'expand'` — always emit the long form (`L`, `C`, `Q`). Required
13108
- * when serializing a sequence of `d` values that must interpolate:
13109
- * SVG only animates between path values with identical command
13110
- * structure (SVG 1.1 §19.2.15.3), and a vertex crossing into or out of
13111
- * axis alignment silently changes which shorthand applies, which would
13112
- * break the animation partway through.
13113
- */
13114
- type PathShorthandPolicy = 'preserve' | 'expand';
13115
- declare function computeSplinePath(points: readonly SplinePointInput[], curveType: string, closed?: boolean, tension?: number, arcParams?: readonly ArcParams[], shorthand?: PathShorthandPolicy): string;
13116
- /**
13117
- * Compute a dash-array string for a given line style.
13118
- *
13119
- * @returns A `stroke-dasharray` value like `"8 4"`, or `null` for solid lines.
13120
- */
13121
- declare function computeDashArray(style: string, dashLength: number, gapLength: number): string | null;
13122
-
13123
- /**
13124
- * Analytic bounds for SVG path geometry.
13125
- *
13126
- * Computes the FILL-geometry axis-aligned bounding box of path data,
13127
- * the same rectangle `SVGGraphicsElement.getBBox()` reports (SVG 2 section 8.10:
13128
- * fill geometry only, with no stroke, no markers, no clip, and no
13129
- * element transform) with no DOM, no layout, and no measurement. Callers may
13130
- * supply an affine map to request the exact box in another user coordinate
13131
- * system, as defined by SVG 2 sections 8.2, 8.6, 8.7, and 8.10.
13132
- *
13133
- * ## Shared command geometry
13134
- *
13135
- * `computeSplinePath` in `./geometry` is the single source of truth for
13136
- * what a point model *denotes*: it resolves curve type (linear, cubic,
13137
- * quadratic, arc, catmull-rom, basis, mixed), subpath breaks, closing
13138
- * segments, and the H/V/S/T shorthand demotions. Deriving bounds from a
13139
- * second, independent traversal of the point model would duplicate those
13140
- * rules. The model entry point consumes the serializer's numeric command
13141
- * stream directly, avoiding text construction and parsing. Dedicated
13142
- * whole-path generators retain the text route. Both routes use the same
13143
- * extrema kernel and preserve the geometry represented by the rendered d.
13144
- *
13145
- * `pathDataBounds` is equally useful on its own for imported or
13146
- * hand-authored `d` strings, so both layers are public.
13147
- *
13148
- * ## Precision
13149
- *
13150
- * Cubic and quadratic extrema are exact (roots of the derivative).
13151
- * Elliptical-arc extrema are exact for the true ellipse. Browsers
13152
- * decompose arcs into ≤90° cubic Bézier approximations before measuring
13153
- * (Blink: `SVGPathNormalizer::DecomposeArcToCubic`), so a browser's
13154
- * `getBBox` can differ from the exact ellipse extent by the
13155
- * approximation error of that decomposition — bounded by roughly
13156
- * 2.7e-4 · r, and zero whenever the extremum lands on a segment
13157
- * endpoint or midpoint (the classic k = 4/3·tan(Δθ/4) construction
13158
- * interpolates both). The exact value is the spec-correct one, so this
13159
- * module reports it rather than reproducing the browser's
13160
- * approximation.
13161
- */
13162
-
13163
- /** Axis-aligned rectangle in the coordinate system of the path data. */
13164
- interface PathBoundsRect {
13165
- minX: number;
13166
- minY: number;
13167
- maxX: number;
13168
- maxY: number;
13169
- }
13170
- /** One-dimensional interval, the per-axis result of a curve extent. */
13171
- interface Extent1D {
13172
- min: number;
13173
- max: number;
13174
- }
13175
- /**
13176
- * Center parameterization of an elliptical arc — the form in which the
13177
- * arc's extrema are solvable. See SVG 2 Appendix B.2.2.
13178
- */
13179
- interface ArcCenterParameterization {
13180
- /** Ellipse center, user space. */
13181
- cx: number;
13182
- cy: number;
13183
- /** Radii after the B.2.5 sign and out-of-range corrections. */
13184
- rx: number;
13185
- ry: number;
13186
- /** X-axis rotation, RADIANS (the endpoint form carries degrees). */
13187
- phi: number;
13188
- /** Start angle, radians. */
13189
- theta1: number;
13190
- /** Swept angle, radians; signed — negative sweeps run counterclockwise. */
13191
- deltaTheta: number;
13192
- }
13193
- /**
13194
- * Exact extent of one axis of a cubic Bézier.
13195
- *
13196
- * `B(t) = (1-t)³p₀ + 3(1-t)²t·p₁ + 3(1-t)t²·p₂ + t³p₃`, so
13197
- * `B'(t) = 3[(−p₀ + 3p₁ − 3p₂ + p₃)t² + 2(p₀ − 2p₁ + p₂)t + (p₁ − p₀)]`.
13198
- * The extent is the union of both endpoints and every root of `B'` that
13199
- * falls inside the segment.
12704
+ * `B(t) = (1-t)³p₀ + 3(1-t)²t·p₁ + 3(1-t)t²·p₂ + t³p₃`, so
12705
+ * `B'(t) = 3[(−p₀ + 3p₁ − 3p₂ + p₃)t² + 2(p₀ − 2p₁ + p₂)t + (p₁ − p₀)]`.
12706
+ * The extent is the union of both endpoints and every root of `B'` that
12707
+ * falls inside the segment.
13200
12708
  */
13201
12709
  declare function cubicBezierExtent1D(p0: number, p1: number, p2: number, p3: number): Extent1D;
13202
12710
  /**
@@ -13471,140 +12979,699 @@ declare function shapeLocalObjectBounds(shape: SerializedShape, host?: ShapeLoca
13471
12979
  /** Center of {@link shapeLocalObjectBounds}, sharing the same host contract. */
13472
12980
  declare function shapeLocalObjectCenter(shape: SerializedShape, host?: ShapeLocalObjectBoundsHost): Point | null;
13473
12981
 
13474
- type BoundsRect = PathBoundsRect;
13475
- type BoundsStatus = 'resolved' | 'empty' | 'unresolved' | 'cycle' | 'unsupported';
13476
- type BoundsDiagnosticCode = 'container-cycle' | 'reference-cycle' | 'unresolved-shape' | 'unresolved-reference-target' | 'unresolved-reference-pivot' | 'duplicate-shape-id' | 'invalid-svg-viewport' | 'unresolved-svg-viewport' | 'symbol-cycle' | 'unresolved-symbol-definition' | 'duplicate-library-id' | 'invalid-symbol-viewport' | 'unresolved-symbol-viewport' | 'unresolved-symbol-pivot' | 'unknown-symbol-variant' | 'ambiguous-symbol-override-target' | 'unresolved-symbol-override-target' | 'unsupported-shape' | 'deferred-tree-kind';
13477
- interface BoundsDiagnostic {
13478
- code: BoundsDiagnosticCode;
13479
- shapeId: string;
13480
- message: string;
13481
- path: readonly string[];
13482
- }
13483
- interface BoundsResult {
13484
- bounds: BoundsRect | null;
13485
- status: BoundsStatus;
13486
- diagnostics: readonly BoundsDiagnostic[];
13487
- }
13488
- type TextObjectBoundsMeasurement = BoundsRect | readonly BoundsRect[];
13489
- interface ShapeObjectBoundsHost {
13490
- /**
13491
- * SVG 2 section 8.10 defines text object bounds as the union of full glyph
13492
- * cells. Returning individual cells preserves exact extrema after shear.
13493
- * A single rectangle remains accepted for aggregate measurement hosts.
13494
- */
13495
- measureText?: (shape: SerializedShape, geometry: TextShapeGeometry) => TextObjectBoundsMeasurement | null;
13496
- }
13497
- interface DocumentBoundsHost extends ShapeObjectBoundsHost {
13498
- /**
13499
- * Replace the authored own matrix with a platform runtime projection.
13500
- *
13501
- * The editor uses this seam for active SMIL and CSS transform state that
13502
- * is intentionally not persisted in the document. Supplemental reference,
13503
- * symbol, and embedded-viewport placement remains owned by the tree walker.
13504
- */
13505
- resolveOwnTransform?: (shape: SerializedShape, authored: Affine2D) => Affine2D;
13506
- /** Runtime conditional-processing hook. `false` removes the branch. */
13507
- participatesInRendering?: (shape: SerializedShape) => boolean;
13508
- /**
13509
- * Runtime conditional-processing hook for a resolved symbol shadow root.
13510
- * Pure bounds already honor authored `display:none`; a host can additionally
13511
- * decide media-query, switch, or cascade participation without a DOM read.
13512
- */
13513
- participatesSymbolDefinition?: (definition: SymbolLibraryDef, instance: SerializedShape) => boolean;
13514
- /** Resolve non-px symbol/use lengths that require a platform metrics host. */
13515
- resolveSymbolLength?: SymbolViewportHost['resolveLength'];
12982
+ type SymbolViewportDiagnosticCode = 'invalid-symbol-length' | 'invalid-symbol-viewbox' | 'unresolved-symbol-viewport';
12983
+ interface SymbolViewportDiagnostic {
12984
+ code: SymbolViewportDiagnosticCode;
12985
+ message: string;
12986
+ }
12987
+ interface SymbolLengthContext {
12988
+ axis: 'x' | 'y' | 'width' | 'height' | 'refX' | 'refY';
12989
+ percentBasis?: number;
12990
+ }
12991
+ interface SymbolViewportHost {
12992
+ resolveLength?: (value: string, context: SymbolLengthContext) => number | null;
12993
+ }
12994
+ interface ResolvedSymbolViewport {
12995
+ readonly kind: 'symbol' | 'group';
12996
+ readonly renders: boolean;
12997
+ readonly useX: number;
12998
+ readonly useY: number;
12999
+ readonly useAttributes: Readonly<AuthoredUseGeometry>;
13000
+ /** Mapping after the use element's own transform. Includes use x/y and def root. */
13001
+ readonly contentMatrix: Affine2D;
13002
+ readonly childPercentBasis: SvgViewportSize | null;
13003
+ readonly viewport: ResolvedSvgViewport | null;
13004
+ readonly diagnostics: readonly SymbolViewportDiagnostic[];
13005
+ }
13006
+ /**
13007
+ * Resolve SVG 2 sections 5.4, 5.5.2, 8.2, and 8.6 through 8.8 for one
13008
+ * symbol instance. The use translation is on the right of its own transform;
13009
+ * this result intentionally starts after that own transform.
13010
+ */
13011
+ declare function resolveSymbolViewport(shape: SerializedShape, def: SymbolLibraryDef, parentViewport?: SvgViewportSize, host?: SymbolViewportHost): ResolvedSymbolViewport;
13012
+
13013
+ type BoundsRect = PathBoundsRect;
13014
+ type BoundsStatus = 'resolved' | 'empty' | 'unresolved' | 'cycle' | 'unsupported';
13015
+ type BoundsDiagnosticCode = 'container-cycle' | 'reference-cycle' | 'unresolved-shape' | 'unresolved-reference-target' | 'unresolved-reference-pivot' | 'duplicate-shape-id' | 'invalid-svg-viewport' | 'unresolved-svg-viewport' | 'symbol-cycle' | 'unresolved-symbol-definition' | 'duplicate-library-id' | 'invalid-symbol-viewport' | 'unresolved-symbol-viewport' | 'unresolved-symbol-pivot' | 'unknown-symbol-variant' | 'ambiguous-symbol-override-target' | 'unresolved-symbol-override-target' | 'unsupported-shape' | 'deferred-tree-kind';
13016
+ interface BoundsDiagnostic {
13017
+ code: BoundsDiagnosticCode;
13018
+ shapeId: string;
13019
+ message: string;
13020
+ path: readonly string[];
13021
+ }
13022
+ interface BoundsResult {
13023
+ bounds: BoundsRect | null;
13024
+ status: BoundsStatus;
13025
+ diagnostics: readonly BoundsDiagnostic[];
13026
+ }
13027
+ type TextObjectBoundsMeasurement = BoundsRect | readonly BoundsRect[];
13028
+ interface ShapeObjectBoundsHost {
13029
+ /**
13030
+ * SVG 2 section 8.10 defines text object bounds as the union of full glyph
13031
+ * cells. Returning individual cells preserves exact extrema after shear.
13032
+ * A single rectangle remains accepted for aggregate measurement hosts.
13033
+ */
13034
+ measureText?: (shape: SerializedShape, geometry: TextShapeGeometry) => TextObjectBoundsMeasurement | null;
13035
+ }
13036
+ interface DocumentBoundsHost extends ShapeObjectBoundsHost {
13037
+ /**
13038
+ * Replace the authored own matrix with a platform runtime projection.
13039
+ *
13040
+ * The editor uses this seam for active SMIL and CSS transform state that
13041
+ * is intentionally not persisted in the document. Supplemental reference,
13042
+ * symbol, and embedded-viewport placement remains owned by the tree walker.
13043
+ */
13044
+ resolveOwnTransform?: (shape: SerializedShape, authored: Affine2D) => Affine2D;
13045
+ /** Runtime conditional-processing hook. `false` removes the branch. */
13046
+ participatesInRendering?: (shape: SerializedShape) => boolean;
13047
+ /**
13048
+ * Runtime conditional-processing hook for a resolved symbol shadow root.
13049
+ * Pure bounds already honor authored `display:none`; a host can additionally
13050
+ * decide media-query, switch, or cascade participation without a DOM read.
13051
+ */
13052
+ participatesSymbolDefinition?: (definition: SymbolLibraryDef, instance: SerializedShape) => boolean;
13053
+ /** Resolve non-px symbol/use lengths that require a platform metrics host. */
13054
+ resolveSymbolLength?: SymbolViewportHost['resolveLength'];
13055
+ }
13056
+ interface DocumentBoundsView {
13057
+ roots(): readonly SerializedShape[];
13058
+ shape(id: string): SerializedShape | undefined;
13059
+ duplicateShapeIds?(): ReadonlySet<string>;
13060
+ libraryDefinition?(id: string): LibraryDef | undefined;
13061
+ duplicateLibraryIds?(): ReadonlySet<string>;
13062
+ children(shape: SerializedShape): readonly SerializedShape[];
13063
+ }
13064
+ interface DocumentBoundsOptions {
13065
+ toTarget?: Affine2D;
13066
+ parentViewport?: SvgViewportSize;
13067
+ }
13068
+ /**
13069
+ * Compute exact SVG object bounds for one registry geometry leaf in an
13070
+ * arbitrary target coordinate system. Own authored transforms are not added;
13071
+ * callers pass the complete affine that maps local geometry into the target.
13072
+ */
13073
+ declare function shapeObjectBoundsInSpace(shape: SerializedShape, toTarget: Affine2D, host?: ShapeObjectBoundsHost): BoundsResult;
13074
+ /**
13075
+ * Read-only snapshot adapter. `sceneTree` is document authority when present;
13076
+ * inline `state.children` is the maintained compatibility projection and the
13077
+ * fallback for older snapshots and unplaced hostile input.
13078
+ */
13079
+ declare function snapshotBoundsView(snapshot: HistorySnapshot): DocumentBoundsView;
13080
+ interface EmbeddedSvgViewportOverride {
13081
+ width?: number;
13082
+ height?: number;
13083
+ }
13084
+ interface EmbeddedSvgTransformResult {
13085
+ matrix: Affine2D;
13086
+ attribute: string | null;
13087
+ pivotRequired: boolean;
13088
+ pivotResolved: boolean;
13089
+ viewport: ResolvedSvgViewport;
13090
+ }
13091
+ /** Resolve the transform outside an embedded SVG viewport. */
13092
+ declare function resolveEmbeddedSvgTransform(shape: SerializedShape, parentViewport?: SvgViewportSize, override?: EmbeddedSvgViewportOverride): EmbeddedSvgTransformResult;
13093
+ /** Resolve the authored viewport frame used by editor selection and resizing. */
13094
+ declare function resolveEmbeddedSvgViewportFrameBounds(view: DocumentBoundsView, shapeOrId: SerializedShape | string, options?: DocumentBoundsOptions, host?: DocumentBoundsHost): BoundsResult;
13095
+ interface ShapeReferenceTransformResult {
13096
+ matrix: Affine2D;
13097
+ attribute: string | null;
13098
+ pivotRequired: boolean;
13099
+ pivotResolved: boolean;
13100
+ diagnostics: readonly BoundsDiagnostic[];
13101
+ }
13102
+ interface SymbolInstanceTransformResult {
13103
+ matrix: Affine2D;
13104
+ attribute: string | null;
13105
+ pivotRequired: boolean;
13106
+ pivotResolved: boolean;
13107
+ diagnostics: readonly BoundsDiagnostic[];
13108
+ }
13109
+ /** Resolve one shape subtree by object or document id. */
13110
+ declare function resolveShapeObjectBounds(view: DocumentBoundsView, shapeOrId: SerializedShape | string, options?: DocumentBoundsOptions, host?: DocumentBoundsHost): BoundsResult;
13111
+ /**
13112
+ * Resolve an element's object box in its own user coordinate system.
13113
+ *
13114
+ * The subject's authored transform is excluded while descendant transforms,
13115
+ * viewport mappings, references, and symbol placement remain authoritative.
13116
+ * This is the reference box CSS Transforms calls fill-box/content-box.
13117
+ */
13118
+ declare function resolveShapeLocalObjectBounds(view: DocumentBoundsView, shapeOrId: SerializedShape | string, options?: Pick<DocumentBoundsOptions, 'parentViewport'>, host?: DocumentBoundsHost): BoundsResult;
13119
+ /**
13120
+ * Resolve the use element's own transform for renderer parity.
13121
+ *
13122
+ * Canonical matrices need no geometry. Deprecated rotation/scale/skew
13123
+ * channels use the translated shadow subtree center, matching the bounds
13124
+ * walk instead of fabricating a pivot from non-authoritative width/height.
13125
+ */
13126
+ declare function resolveShapeReferenceTransform(view: DocumentBoundsView, shape: SerializedShape, host?: DocumentBoundsHost, parentViewport?: SvgViewportSize): ShapeReferenceTransformResult;
13127
+ /**
13128
+ * Resolve the transform emitted on one symbol-instance use element. SVG 2
13129
+ * section 5.5.2 orders imported use transform, canonical or legacy instance
13130
+ * transform, and then the supplemental x/y translation into the shadow tree.
13131
+ */
13132
+ declare function resolveSymbolInstanceTransform(view: DocumentBoundsView, shape: SerializedShape, host?: DocumentBoundsHost, parentViewport?: SvgViewportSize): SymbolInstanceTransformResult;
13133
+ /** Union every snapshot root in the requested target coordinate system. */
13134
+ declare function documentObjectBounds(view: DocumentBoundsView, options?: DocumentBoundsOptions, host?: DocumentBoundsHost): BoundsResult;
13135
+ interface InlineContainerTransformResult {
13136
+ transform: ResolvedContainerTransform;
13137
+ contentBounds: BoundsResult | null;
13138
+ pivotRequired: boolean;
13139
+ pivotResolved: boolean;
13140
+ }
13141
+ /**
13142
+ * Resolve a serialized container's emitted transform from its inline content.
13143
+ * Renderers use this same local-content walk as analytic bounds so legacy
13144
+ * rotation/scale/skew channels cannot silently choose a different pivot.
13145
+ */
13146
+ declare function resolveInlineContainerTransform(shape: SerializedShape, host?: DocumentBoundsHost): InlineContainerTransformResult;
13147
+
13148
+ /**
13149
+ * Symbol-instance resolution - the single definition of what a
13150
+ * `symbol-instance` shape points at.
13151
+ *
13152
+ * A `symbol-instance` renders as `<use href="#target">` (SVG 2 §5.6), and
13153
+ * the target is not always the library def's own id. Variants and
13154
+ * per-instance overrides have no representation in the library - a
13155
+ * `SymbolLibraryDef` carries every variant's shapes, but which one an
13156
+ * instance selects, and what its overrides do to them, is instance state.
13157
+ * The renderer therefore MATERIALIZES a `<symbol>` per referenced
13158
+ * (def, variant, override) combination under a synthetic id:
13159
+ *
13160
+ * - no variant, no overrides -> `<def id>` (the library def)
13161
+ * - variant `state=hover` -> `<def id>--state_hover`
13162
+ * - any overrides -> `<def id>--ovr-<instance id>`
13163
+ *
13164
+ * Two call sites depend on that mapping and MUST agree on it, or a `<use>`
13165
+ * points at a def that was never emitted:
13166
+ *
13167
+ * 1. `renderShape` (shape-renderers.ts) writes the `<use href>`.
13168
+ * 2. `renderSymbolDefs` (svg-renderer.ts) emits the `<symbol>` bodies.
13169
+ *
13170
+ * They agree because both go through this module. `targetId` and
13171
+ * `resolveShapes` are two halves of one decision - the `--ovr-` id is
13172
+ * exactly the case where overrides are applied, the `--<variant>` id
13173
+ * exactly the case where a variant array replaces `def.shapes` - so they
13174
+ * live together and are never re-derived elsewhere.
13175
+ *
13176
+ * Dependency-free apart from types, so both the shape dispatcher and the
13177
+ * document renderer can import it without an import cycle.
13178
+ *
13179
+ * @packageDocumentation
13180
+ */
13181
+
13182
+ type SymbolResolutionDiagnosticCode = 'unknown-symbol-variant' | 'ambiguous-symbol-override-target' | 'unresolved-symbol-override-target';
13183
+ interface SymbolResolutionDiagnostic {
13184
+ code: SymbolResolutionDiagnosticCode;
13185
+ shapeId: string;
13186
+ message: string;
13187
+ }
13188
+ interface ResolvedSymbolInstanceContent {
13189
+ readonly shapes: readonly SerializedShape[];
13190
+ readonly requestedVariantKey: string;
13191
+ readonly effectiveVariantKey: string;
13192
+ readonly candidateTargetId: string;
13193
+ readonly materializationKey: string;
13194
+ readonly materialized: boolean;
13195
+ readonly diagnostics: readonly SymbolResolutionDiagnostic[];
13196
+ }
13197
+ /** Resolve variant selection and recursive immutable overrides once for every surface. */
13198
+ declare function resolveSymbolInstanceContent(def: SymbolLibraryDef, instance: SerializedShape): ResolvedSymbolInstanceContent;
13199
+ /**
13200
+ * The `<symbol>` id an instance's `<use href>` resolves to.
13201
+ *
13202
+ * Mirrors the editor-side `exportSymbolInstances` in
13203
+ * `apps/editor/src/canvas/svg-export-finalizer.ts` so an editor export and
13204
+ * a headless render of the same document target the same ids.
13205
+ *
13206
+ * `dedicated` forces the per-instance `--ovr-` id even without
13207
+ * overrides — the animated-export policy for instances driven by an
13208
+ * `instanceVariant` timeline track, whose injected variant-transition
13209
+ * animations must not bleed into sibling instances of the same def. The
13210
+ * editor's animated export materializes those dedicated defs and passes
13211
+ * the flag here so its `<use href>` retargeting and the def id agree.
13212
+ */
13213
+ declare function symbolInstanceTargetId(instance: SerializedShape, dedicated?: boolean): string;
13214
+ /**
13215
+ * The shapes that make up the `<symbol>` body an instance resolves to:
13216
+ * the selected variant (falling back to `def.shapes`, the default
13217
+ * variant, when the key is absent or unknown) with the instance's
13218
+ * per-shape overrides merged on top.
13219
+ *
13220
+ * Overrides are keyed by INNER shape id and merge shallowly into that
13221
+ * shape's state, which is what keeps the inner ids - and therefore any
13222
+ * shape-derived def ids such as `filter-<id>` - stable across
13223
+ * materializations.
13224
+ */
13225
+ declare function resolveSymbolInstanceShapes(def: SymbolLibraryDef, instance: SerializedShape): SerializedShape[];
13226
+
13227
+ type SymbolMaterializationDiagnosticCode = SymbolResolutionDiagnosticCode | 'unresolved-symbol-definition' | 'duplicate-library-id' | 'symbol-cycle';
13228
+ interface SymbolMaterializationDiagnostic {
13229
+ readonly code: SymbolMaterializationDiagnosticCode;
13230
+ readonly shapeId: string;
13231
+ readonly message: string;
13232
+ }
13233
+ interface SymbolMaterialization {
13234
+ readonly materializationKey: string;
13235
+ readonly targetId: string;
13236
+ readonly candidateTargetId: string;
13237
+ readonly definition: SymbolLibraryDef;
13238
+ readonly shapes: readonly SerializedShape[];
13239
+ readonly parentViewport?: Readonly<SvgViewportSize>;
13240
+ readonly viewport: ResolvedSymbolViewport;
13241
+ }
13242
+ interface SymbolInstanceMaterialization {
13243
+ readonly targetId: string | null;
13244
+ readonly definition: SymbolLibraryDef | null;
13245
+ readonly materializationKey: string | null;
13246
+ /** Final occurrence-local materialization used by every render surface. */
13247
+ readonly materialization: SymbolMaterialization | null;
13248
+ readonly diagnostics: readonly SymbolMaterializationDiagnostic[];
13249
+ readonly parentViewport?: Readonly<SvgViewportSize>;
13250
+ readonly viewport: ResolvedSymbolViewport | null;
13251
+ }
13252
+ interface SymbolMaterializationPlan {
13253
+ readonly materializations: readonly SymbolMaterialization[];
13254
+ readonly diagnostics: readonly SymbolMaterializationDiagnostic[];
13255
+ resolve(instance: SerializedShape): SymbolInstanceMaterialization | undefined;
13256
+ }
13257
+ interface SymbolMaterializationPlanOptions {
13258
+ readonly reservedIds?: ReadonlySet<string>;
13259
+ readonly parentViewport?: Readonly<SvgViewportSize>;
13260
+ readonly viewportHost?: SymbolViewportHost;
13261
+ /**
13262
+ * Per-occurrence render policy supplied by a document surface.
13263
+ *
13264
+ * An `instanceVariant` animation starts from its first keyed state and
13265
+ * needs a dedicated target so injected animation never changes sibling
13266
+ * instances that otherwise share the same definition.
13267
+ */
13268
+ readonly instancePolicy?: (instance: SerializedShape) => {
13269
+ readonly initialVariantKey?: string;
13270
+ readonly dedicated?: boolean;
13271
+ } | undefined;
13272
+ }
13273
+ /**
13274
+ * Build the complete SVG 2 section 5.5 shadow-tree materialization plan for
13275
+ * one document. Cycle identity is semantic definition + variant + override
13276
+ * content, so finite cross-variant recursion remains legal while an actual
13277
+ * repeated shadow root is pruned before markup emission.
13278
+ */
13279
+ declare function buildSymbolMaterializationPlan(library: readonly LibraryDef[], roots: readonly SerializedShape[], options?: SymbolMaterializationPlanOptions): SymbolMaterializationPlan;
13280
+
13281
+ /**
13282
+ * Reachability walk over the shapes a rendered document actually paints.
13283
+ *
13284
+ * `<defs>` emission is reference-driven: a def is emitted only when
13285
+ * something in the rendered output points at it with `url(#id)`. Getting
13286
+ * that set right means walking more than the top-level shape array,
13287
+ * because two nesting mechanisms put `url(#…)` references into the output
13288
+ * without a top-level shape carrying them:
13289
+ *
13290
+ * 1. **Container children.** `<g>`, `<a>`, `<switch>` and nested `<svg>`
13291
+ * render `state.children` inline (see `renderContainerChildren` in
13292
+ * shape-renderers.ts), so a child's fill / filter / marker reference
13293
+ * is live in the document.
13294
+ * 2. **Library def contents.** A `<symbol>` or `<marker>` def emits its
13295
+ * inner shapes verbatim, so those shapes' references are live too -
13296
+ * SVG 2 §5.5 resolves them against the document `<defs>`, not against
13297
+ * any def-local scope.
13298
+ *
13299
+ * Both are transitive: a symbol's inner shape can be a group whose child
13300
+ * instantiates another symbol. Reachability is therefore a fixpoint, and
13301
+ * a symbol that (directly or indirectly) instantiates itself must not
13302
+ * spin - each def's contents are expanded at most once.
13303
+ *
13304
+ * This module is intentionally dependency-free apart from types so that
13305
+ * both `library-renderers.ts` (which emits the defs) and
13306
+ * `shape-renderers.ts` (which emits built-in `<marker>` defs) can share
13307
+ * one definition of "reachable" without an import cycle. The editor's
13308
+ * live `<defs>` reconciler (`MarkerManager`) shares it too, through
13309
+ * `forEachShapeInLibraryDefs` - which is what stops the canvas and the
13310
+ * exported file from disagreeing about which defs a document needs.
13311
+ *
13312
+ * @packageDocumentation
13313
+ */
13314
+
13315
+ /**
13316
+ * Id → def lookup for the reachability walks.
13317
+ *
13318
+ * A caller that already owns a keyed store of its defs (the editor's
13319
+ * `LibraryRegistry` is exactly such a map) can hand it straight to the
13320
+ * walkers instead of paying to rebuild an index per call - which matters
13321
+ * because the editor runs `collectReferencedMarkerIds` on the animation
13322
+ * path.
13323
+ */
13324
+ type LibraryIndex = ReadonlyMap<string, LibraryDef>;
13325
+ /** Accept either the array form or a prebuilt index. */
13326
+ type LibrarySource = readonly LibraryDef[] | LibraryIndex;
13327
+ /**
13328
+ * Call `visit` once for every shape whose rendered form can appear in the
13329
+ * document: each top-level shape, every container descendant, and the
13330
+ * inner shapes (plus symbol variants) of the `<symbol>` / `<marker>`
13331
+ * library defs those shapes reach.
13332
+ *
13333
+ * Visit order is deterministic and stable: top-level shapes in document
13334
+ * order first, then the transitive frontier discovered from them. Callers
13335
+ * whose output order depends on discovery order can rely on that - and on
13336
+ * the fact that the top-level prefix is exactly the pre-transitive walk.
13337
+ *
13338
+ * `visit` may be called more than once for the same shape only if the
13339
+ * document itself contains it more than once (e.g. two symbols sharing an
13340
+ * inner shape object); accumulating callers should be idempotent.
13341
+ *
13342
+ * @param shapes Top-level shapes of the rendered document.
13343
+ * @param library Library defs available for reference resolution. Pass an
13344
+ * empty array to walk containers only.
13345
+ * @param visit Callback invoked per reachable shape.
13346
+ */
13347
+ declare function forEachReachableShape(shapes: readonly SerializedShape[], library: LibrarySource, visit: (shape: SerializedShape) => void): void;
13348
+ /**
13349
+ * Same walk, seeded from library def ids rather than from shapes: visits
13350
+ * the contents of each named `<symbol>` / `<marker>` def and everything
13351
+ * those contents transitively reach.
13352
+ *
13353
+ * This is the half of reachability that a LIVE editor cannot answer from
13354
+ * its shape registry. Symbol-instance content is materialized as
13355
+ * temporary shapes that never enter the registry or the scene graph, so
13356
+ * a document-side walk sees the `symbolId` but nothing inside it. Seeding
13357
+ * from the def ids the document reaches recovers exactly the missing
13358
+ * frontier, and - because it is the same engine the export collector runs
13359
+ * - recovers it with identical nesting, variant, and cycle semantics.
13360
+ *
13361
+ * Ids that are absent from `library`, or that name a def with no contents
13362
+ * (paint servers, filters), are skipped.
13363
+ */
13364
+ declare function forEachShapeInLibraryDefs(rootDefIds: Iterable<string>, library: LibrarySource, visit: (shape: SerializedShape) => void): void;
13365
+ /**
13366
+ * Marker ids a single shape's state puts into the rendered output: the
13367
+ * three explicit `marker-*` refs, plus the built-in ids the legacy
13368
+ * `startEndpoint` / `endEndpoint` dropdowns resolve to (`Line` and
13369
+ * `Path` fold those into their painted refs - see
13370
+ * `endpointMarkerAttributes` in codegen/helpers.ts and
13371
+ * `Line.getEffectiveMarkerRefs()` in the editor).
13372
+ *
13373
+ * One definition, shared by the export collector and by the editor's live
13374
+ * `<defs>` reconciler, so the two cannot disagree about what a given
13375
+ * state means.
13376
+ */
13377
+ declare function forEachMarkerRefInState(state: SerializedShape['state'] | Record<string, unknown> | undefined, visit: (markerId: string) => void): void;
13378
+ /** The built-in `<marker>` id a legacy endpoint name resolves to. */
13379
+ declare function legacyEndpointMarkerId(endpoint: string): string;
13380
+ /**
13381
+ * Library def ids a single shape's state references: fill / stroke paint
13382
+ * servers, the filter chain, the marker refs, and the symbol it
13383
+ * instantiates.
13384
+ *
13385
+ * Mirrors the reference set `collectReferencedLibraryDefs` scans per
13386
+ * shape, including the legacy fallbacks - an inline `fillGradient`
13387
+ * payload with no `fillLibraryId` still names a def, and a populated
13388
+ * `filters` array with no `filterLibraryIds` names the shape-derived
13389
+ * `filter-<shapeId>`. It reports RAW ids and makes no library lookup, so
13390
+ * a caller can use it against a live document whose defs are stored
13391
+ * somewhere other than a `LibraryDef[]`.
13392
+ *
13393
+ * Deliberately NOT shared with `collectReferencedLibraryDefs` itself:
13394
+ * that function has to decide, per id, between emitting the library
13395
+ * entry and synthesizing a transient def from the inline payload, and
13396
+ * the order in which it resolves the two is observable in the emitted
13397
+ * `<defs>`. Keeping the two separate leaves that byte-order contract
13398
+ * untouched; that they agree on the reference SET is enforced by test
13399
+ * rather than by shared code.
13400
+ */
13401
+ declare function forEachLibraryRefInState(state: SerializedShape['state'] | Record<string, unknown> | undefined, shapeId: string, visit: (libraryId: string) => void): void;
13402
+ /**
13403
+ * Marker references found by walking a document, split the way
13404
+ * `renderBuiltinMarkerDefs` consumes them:
13405
+ * - `ids`: raw marker ids from `state.markerStart` / `markerMid` /
13406
+ * `markerEnd` - built-in (`mkr-builtin-arrow`, `line-marker-arrow`)
13407
+ * or user marker ids.
13408
+ * - `legacyEndpoints`: endpoint names from `state.startEndpoint` /
13409
+ * `endEndpoint` (e.g. `'arrow'`), which `Line` / `Path` emit as a
13410
+ * shortcut to built-in markers without explicit `marker-*` attrs.
13411
+ */
13412
+ interface MarkerReferenceSets {
13413
+ ids: Set<string>;
13414
+ legacyEndpoints: Set<string>;
13415
+ }
13416
+ /**
13417
+ * Walk a document for marker references. Reachability, not just the top
13418
+ * level: container children render inline and `<symbol>` / `<marker>`
13419
+ * inner shapes emit verbatim, so a `marker-start="url(#line-marker-arrow)"`
13420
+ * written from inside a symbol needs its built-in def as much as a
13421
+ * top-level one does.
13422
+ */
13423
+ declare function collectMarkerReferences(shapes: readonly SerializedShape[], library?: LibrarySource): MarkerReferenceSets;
13424
+ /**
13425
+ * Every `<marker>` id a rendered document needs a def for, as one flat
13426
+ * set: the raw `marker-*` refs plus the built-in ids the legacy endpoint
13427
+ * dropdowns resolve to.
13428
+ *
13429
+ * This is the reference answer to "which markers must be in `<defs>`?".
13430
+ * The editor's live reconciler computes the same set incrementally from
13431
+ * its model; that the two agree is what keeps canvas and export from
13432
+ * diverging.
13433
+ */
13434
+ declare function collectReferencedMarkerIds(shapes: readonly SerializedShape[], library: LibrarySource): Set<string>;
13435
+
13436
+ type PresentationValueReader = (key: string) => unknown;
13437
+ interface PresentationSemanticContext {
13438
+ shapeId: string;
13439
+ includeAuthoredAttributes?: boolean;
13440
+ includeContainerPresentation?: boolean;
13441
+ retainCssAnimationDeclarations?: boolean;
13442
+ /**
13443
+ * The live editor projects resolved static stylesheet values inline so its
13444
+ * structural scaffolding cannot alter selector matching. Serialized SVG
13445
+ * renderers leave both stylesheet channels to the canonical stylesheet.
13446
+ */
13447
+ projectStaticStylesheetValues?: boolean;
13448
+ }
13449
+ interface PresentationWrite {
13450
+ channel: 'attribute' | 'style';
13451
+ name: string;
13452
+ value: string | number | null;
13453
+ allowEmpty?: boolean;
13454
+ ifAbsent?: boolean;
13455
+ }
13456
+ interface PresentationSemanticEntry {
13457
+ id: string;
13458
+ keys: readonly string[];
13459
+ project: (read: PresentationValueReader, context: PresentationSemanticContext) => readonly PresentationWrite[];
13460
+ }
13461
+ /**
13462
+ * Ordered common-presentation semantics shared by headless rendering,
13463
+ * component code generation, and the editor's incremental apply layer.
13464
+ *
13465
+ * Order is part of the contract. The dash row follows linecap so dotted
13466
+ * style can make the final cap round, and unmodeled authored attributes
13467
+ * remain the final row so typed state keeps one deterministic owner.
13468
+ */
13469
+ declare const PRESENTATION_SEMANTICS: readonly [{
13470
+ readonly id: "fill";
13471
+ readonly keys: readonly ["fillColor", "fillType", "fillGradient", "fillLibraryId", "inheritFill", "authoredFillPaint"];
13472
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13473
+ }, {
13474
+ readonly id: "element-opacity";
13475
+ readonly keys: readonly ["opacity", "preserveOpacity"];
13476
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13477
+ }, {
13478
+ readonly id: "fill-opacity";
13479
+ readonly keys: readonly ["fillOpacity", "preserveFillOpacity", "fillType", "fillGradient", "inheritFill"];
13480
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13481
+ }, {
13482
+ readonly id: "fill-rule";
13483
+ readonly keys: readonly ["fillRule"];
13484
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13485
+ }, {
13486
+ readonly id: "stroke";
13487
+ readonly keys: readonly ["borderColor", "strokeType", "strokeGradient", "strokeLibraryId", "inheritStroke", "authoredStrokePaint"];
13488
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13489
+ }, {
13490
+ readonly id: "stroke-width";
13491
+ readonly keys: readonly ["borderWidth"];
13492
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13493
+ }, {
13494
+ readonly id: "stroke-opacity";
13495
+ readonly keys: readonly ["strokeOpacity", "preserveStrokeOpacity", "strokeType", "strokeGradient", "inheritStroke"];
13496
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13497
+ }, {
13498
+ readonly id: "blend-mode";
13499
+ readonly keys: readonly ["blendMode"];
13500
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13501
+ }, {
13502
+ readonly id: "paint-order";
13503
+ readonly keys: readonly ["paintOrder"];
13504
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13505
+ }, {
13506
+ readonly id: "inline-style";
13507
+ readonly keys: readonly ["inlineStyle"];
13508
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13509
+ }, {
13510
+ readonly id: "markers";
13511
+ readonly keys: readonly ["markerStart", "markerMid", "markerEnd"];
13512
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13513
+ }, {
13514
+ readonly id: "stroke-linejoin";
13515
+ readonly keys: readonly ["strokeLinejoin"];
13516
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13517
+ }, {
13518
+ readonly id: "stroke-linecap";
13519
+ readonly keys: readonly ["strokeLinecap"];
13520
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13521
+ }, {
13522
+ readonly id: "stroke-miterlimit";
13523
+ readonly keys: readonly ["strokeMiterlimit"];
13524
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13525
+ }, {
13526
+ readonly id: "stroke-dasharray";
13527
+ readonly keys: readonly ["lineStyle", "dashLength", "gapLength", "strokeDasharray", "strokeLinecap"];
13528
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13529
+ }, {
13530
+ readonly id: "stroke-dashoffset";
13531
+ readonly keys: readonly ["dashOffset"];
13532
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13533
+ }, {
13534
+ readonly id: "shape-rendering";
13535
+ readonly keys: readonly ["shapeRendering"];
13536
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13537
+ }, {
13538
+ readonly id: "text-rendering";
13539
+ readonly keys: readonly ["textRendering"];
13540
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13541
+ }, {
13542
+ readonly id: "image-rendering";
13543
+ readonly keys: readonly ["imageRendering"];
13544
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13545
+ }, {
13546
+ readonly id: "color-rendering";
13547
+ readonly keys: readonly ["colorRendering"];
13548
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13549
+ }, {
13550
+ readonly id: "color-interpolation";
13551
+ readonly keys: readonly ["colorInterpolation"];
13552
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13553
+ }, {
13554
+ readonly id: "filter";
13555
+ readonly keys: readonly ["filters", "filterLibraryIds"];
13556
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13557
+ }, {
13558
+ readonly id: "system-language";
13559
+ readonly keys: readonly ["systemLanguage"];
13560
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13561
+ }, {
13562
+ readonly id: "required-extensions";
13563
+ readonly keys: readonly ["requiredExtensions"];
13564
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13565
+ }, {
13566
+ readonly id: "vector-effect";
13567
+ readonly keys: readonly ["vectorEffect"];
13568
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13569
+ }, {
13570
+ readonly id: "visibility";
13571
+ readonly keys: readonly ["visibility"];
13572
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13573
+ }, {
13574
+ readonly id: "display";
13575
+ readonly keys: readonly ["displayAttr"];
13576
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13577
+ }, {
13578
+ readonly id: "visible";
13579
+ readonly keys: readonly ["visible"];
13580
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13581
+ }, {
13582
+ readonly id: "path-length";
13583
+ readonly keys: readonly ["pathLength"];
13584
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13585
+ }, {
13586
+ readonly id: "transform-box";
13587
+ readonly keys: readonly ["transformBox"];
13588
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13589
+ }, {
13590
+ readonly id: "transform";
13591
+ readonly keys: readonly ["rotation", "transformMatrix", "translateX", "translateY", "skewX", "skewY", "scaleX", "scaleY", "customPivot", "rawTransform"];
13592
+ readonly project: () => never[];
13593
+ }, {
13594
+ readonly id: "locked";
13595
+ readonly keys: readonly ["locked"];
13596
+ readonly project: () => never[];
13597
+ }, {
13598
+ readonly id: "metadata";
13599
+ readonly keys: readonly ["metadata"];
13600
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13601
+ }, {
13602
+ readonly id: "css-clip-path";
13603
+ readonly keys: readonly ["cssClipPath"];
13604
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13605
+ }, {
13606
+ readonly id: "css-mask-properties";
13607
+ readonly keys: readonly ["cssMaskProperties"];
13608
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13609
+ }, {
13610
+ readonly id: "container-presentation";
13611
+ readonly keys: readonly ["containerPresentation"];
13612
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13613
+ }, {
13614
+ readonly id: "authored-attributes";
13615
+ readonly keys: readonly ["authoredAttributes"];
13616
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13617
+ }];
13618
+ type PresentationSemanticId = (typeof PRESENTATION_SEMANTICS)[number]['id'];
13619
+ declare function projectPresentationEntry(entry: PresentationSemanticEntry, read: PresentationValueReader, context: PresentationSemanticContext): readonly PresentationWrite[];
13620
+ declare function projectPresentation(read: PresentationValueReader, context: PresentationSemanticContext): PresentationWrite[];
13621
+ declare function serializedPresentationReader(state: SerializedShapeState): PresentationValueReader;
13622
+
13623
+ type DefinitionAttribute = readonly [name: string, value: string | number];
13624
+ interface GradientStopEnvelope {
13625
+ attributes: readonly DefinitionAttribute[];
13516
13626
  }
13517
- interface DocumentBoundsView {
13518
- roots(): readonly SerializedShape[];
13519
- shape(id: string): SerializedShape | undefined;
13520
- duplicateShapeIds?(): ReadonlySet<string>;
13521
- libraryDefinition?(id: string): LibraryDef | undefined;
13522
- duplicateLibraryIds?(): ReadonlySet<string>;
13523
- children(shape: SerializedShape): readonly SerializedShape[];
13627
+ interface GradientDefinitionEnvelope {
13628
+ element: 'linearGradient' | 'radialGradient';
13629
+ attributes: readonly DefinitionAttribute[];
13630
+ stops: readonly GradientStopEnvelope[];
13524
13631
  }
13525
- interface DocumentBoundsOptions {
13526
- toTarget?: Affine2D;
13527
- parentViewport?: SvgViewportSize;
13632
+ interface PatternDefinitionEnvelope {
13633
+ attributes: readonly DefinitionAttribute[];
13634
+ content: string;
13528
13635
  }
13529
- /**
13530
- * Compute exact SVG object bounds for one registry geometry leaf in an
13531
- * arbitrary target coordinate system. Own authored transforms are not added;
13532
- * callers pass the complete affine that maps local geometry into the target.
13533
- */
13534
- declare function shapeObjectBoundsInSpace(shape: SerializedShape, toTarget: Affine2D, host?: ShapeObjectBoundsHost): BoundsResult;
13535
- /**
13536
- * Read-only snapshot adapter. `sceneTree` is document authority when present;
13537
- * inline `state.children` is the maintained compatibility projection and the
13538
- * fallback for older snapshots and unplaced hostile input.
13539
- */
13540
- declare function snapshotBoundsView(snapshot: HistorySnapshot): DocumentBoundsView;
13541
- interface EmbeddedSvgViewportOverride {
13542
- width?: number;
13543
- height?: number;
13636
+ type FilterColorInterpolation = 'auto' | 'sRGB' | 'linearRGB';
13637
+ type FilterUnits = 'userSpaceOnUse' | 'objectBoundingBox';
13638
+ interface FilterElementAttrs {
13639
+ colorInterpolation?: FilterColorInterpolation | null;
13640
+ filterUnits?: FilterUnits;
13641
+ primitiveUnits?: FilterUnits;
13642
+ x?: string;
13643
+ y?: string;
13644
+ width?: string;
13645
+ height?: string;
13544
13646
  }
13545
- interface EmbeddedSvgTransformResult {
13546
- matrix: Affine2D;
13547
- attribute: string | null;
13548
- pivotRequired: boolean;
13549
- pivotResolved: boolean;
13550
- viewport: ResolvedSvgViewport;
13647
+ interface FilterEnvelopeBase {
13648
+ attributes: readonly DefinitionAttribute[];
13551
13649
  }
13552
- /** Resolve the transform outside an embedded SVG viewport. */
13553
- declare function resolveEmbeddedSvgTransform(shape: SerializedShape, parentViewport?: SvgViewportSize, override?: EmbeddedSvgViewportOverride): EmbeddedSvgTransformResult;
13554
- /** Resolve the authored viewport frame used by editor selection and resizing. */
13555
- declare function resolveEmbeddedSvgViewportFrameBounds(view: DocumentBoundsView, shapeOrId: SerializedShape | string, options?: DocumentBoundsOptions, host?: DocumentBoundsHost): BoundsResult;
13556
- interface ShapeReferenceTransformResult {
13557
- matrix: Affine2D;
13558
- attribute: string | null;
13559
- pivotRequired: boolean;
13560
- pivotResolved: boolean;
13561
- diagnostics: readonly BoundsDiagnostic[];
13650
+ interface RawFilterEnvelope extends FilterEnvelopeBase {
13651
+ kind: 'raw';
13652
+ content: string;
13562
13653
  }
13563
- interface SymbolInstanceTransformResult {
13564
- matrix: Affine2D;
13565
- attribute: string | null;
13566
- pivotRequired: boolean;
13567
- pivotResolved: boolean;
13568
- diagnostics: readonly BoundsDiagnostic[];
13654
+ interface PrimitiveChainFilterEnvelope extends FilterEnvelopeBase {
13655
+ kind: 'primitive-chain';
13656
+ chain: SvgPrimitiveChainFilter;
13569
13657
  }
13570
- /** Resolve one shape subtree by object or document id. */
13571
- declare function resolveShapeObjectBounds(view: DocumentBoundsView, shapeOrId: SerializedShape | string, options?: DocumentBoundsOptions, host?: DocumentBoundsHost): BoundsResult;
13572
- /**
13573
- * Resolve an element's object box in its own user coordinate system.
13574
- *
13575
- * The subject's authored transform is excluded while descendant transforms,
13576
- * viewport mappings, references, and symbol placement remain authoritative.
13577
- * This is the reference box CSS Transforms calls fill-box/content-box.
13578
- */
13579
- declare function resolveShapeLocalObjectBounds(view: DocumentBoundsView, shapeOrId: SerializedShape | string, options?: Pick<DocumentBoundsOptions, 'parentViewport'>, host?: DocumentBoundsHost): BoundsResult;
13580
- /**
13581
- * Resolve the use element's own transform for renderer parity.
13582
- *
13583
- * Canonical matrices need no geometry. Deprecated rotation/scale/skew
13584
- * channels use the translated shadow subtree center, matching the bounds
13585
- * walk instead of fabricating a pivot from non-authoritative width/height.
13586
- */
13587
- declare function resolveShapeReferenceTransform(view: DocumentBoundsView, shape: SerializedShape, host?: DocumentBoundsHost, parentViewport?: SvgViewportSize): ShapeReferenceTransformResult;
13588
- /**
13589
- * Resolve the transform emitted on one symbol-instance use element. SVG 2
13590
- * section 5.5.2 orders imported use transform, canonical or legacy instance
13591
- * transform, and then the supplemental x/y translation into the shadow tree.
13592
- */
13593
- declare function resolveSymbolInstanceTransform(view: DocumentBoundsView, shape: SerializedShape, host?: DocumentBoundsHost, parentViewport?: SvgViewportSize): SymbolInstanceTransformResult;
13594
- /** Union every snapshot root in the requested target coordinate system. */
13595
- declare function documentObjectBounds(view: DocumentBoundsView, options?: DocumentBoundsOptions, host?: DocumentBoundsHost): BoundsResult;
13596
- interface InlineContainerTransformResult {
13597
- transform: ResolvedContainerTransform;
13598
- contentBounds: BoundsResult | null;
13599
- pivotRequired: boolean;
13600
- pivotResolved: boolean;
13658
+ interface GeneratedFilterEnvelope extends FilterEnvelopeBase {
13659
+ kind: 'generated';
13660
+ filters: readonly ShapeFilter[];
13661
+ primitiveUnits: FilterUnits;
13601
13662
  }
13663
+ type FilterDefinitionEnvelope = RawFilterEnvelope | PrimitiveChainFilterEnvelope | GeneratedFilterEnvelope;
13602
13664
  /**
13603
- * Resolve a serialized container's emitted transform from its inline content.
13604
- * Renderers use this same local-content walk as analytic bounds so legacy
13605
- * rotation/scale/skew channels cannot silently choose a different pivot.
13665
+ * Build the one portable pattern definition consumed by static rendering and
13666
+ * platform projections. SVG 2 section 14.3 keeps tile lengths on the pattern
13667
+ * resource, so valid source spellings remain authoritative over the numeric
13668
+ * editor projection.
13606
13669
  */
13607
- declare function resolveInlineContainerTransform(shape: SerializedShape, host?: DocumentBoundsHost): InlineContainerTransformResult;
13670
+ declare function patternDefinitionEnvelope(id: string, pattern: PatternFill): PatternDefinitionEnvelope;
13671
+ declare function linearGradientEnvelope(id: string, gradient: LinearGradient): GradientDefinitionEnvelope;
13672
+ declare function radialGradientEnvelope(id: string, gradient: RadialGradient): GradientDefinitionEnvelope;
13673
+ declare function filterChainExtendsBounds(filters: readonly ShapeFilter[]): boolean;
13674
+ declare function filterDefinitionEnvelope(filterId: string, filters: readonly ShapeFilter[], attrs?: FilterElementAttrs): FilterDefinitionEnvelope | null;
13608
13675
 
13609
13676
  /**
13610
13677
  * Connector routing — pure path-math for line shapes acting as connectors,
@@ -13733,6 +13800,20 @@ declare function renderForeignObject(shape: SerializedShape, ctx?: RenderShapeCo
13733
13800
  * is optional and degrades to the context-free behavior when absent, so
13734
13801
  * the per-shape renderers stay callable in isolation.
13735
13802
  */
13803
+ /**
13804
+ * Root-open-tag rewrites a planning stage applies to an already-rendered
13805
+ * shape. The two operations are kept distinct and named rather than folded
13806
+ * into one generic map, because they are not interchangeable: an attribute
13807
+ * the renderer owns is REPLACED, while inline style declarations are
13808
+ * APPENDED so the planner's contribution loses to nothing the shape itself
13809
+ * declared for a different property and wins the cascade against its own.
13810
+ */
13811
+ interface RenderedRootOverrides {
13812
+ /** Attribute values that replace whatever the renderer emitted. */
13813
+ readonly replace?: ReadonlyMap<string, string>;
13814
+ /** Declarations appended to the element's existing inline `style`. */
13815
+ readonly appendStyle?: string;
13816
+ }
13736
13817
  interface RenderShapeContext {
13737
13818
  /** Keep native inline CSS animation assignments instead of normalized SMIL fallback. */
13738
13819
  retainCssAnimationDeclarations?: boolean;
@@ -13808,6 +13889,21 @@ interface RenderShapeContext {
13808
13889
  forcedElementIds?: ReadonlySet<string>;
13809
13890
  /** Deterministic collision-free root element id allocated by the render plan. */
13810
13891
  elementIdForShape?: (shape: SerializedShape) => string | undefined;
13892
+ /**
13893
+ * Root-attribute values that replace whatever the renderer emitted for the
13894
+ * same names, applied after authored passthrough and before animation
13895
+ * children.
13896
+ *
13897
+ * Ephemeral rendered-state input from a planning stage, in the same sense as
13898
+ * {@link renderClipMaskDefinitionShape}'s transform override: the serialized
13899
+ * shape remains the sole document authority, and the override exists because
13900
+ * the emitted frame is a function of the document PLUS a timeline. The
13901
+ * variant-transition planner uses it to rewrite the pre-SMIL base transform
13902
+ * of a polygon-family inner shape, which no combination of shape state can
13903
+ * spell (the kernel emits a simplified `translate(cx, cy) rotate(r)` frame
13904
+ * that the shape's own transform emission does not produce).
13905
+ */
13906
+ rootAttributeOverridesForShape?: (shape: SerializedShape) => RenderedRootOverrides | undefined;
13811
13907
  /** SMIL children owned by this exact serialized shape in the document tree. */
13812
13908
  animationElementsForShape?: (shape: SerializedShape) => readonly string[] | undefined;
13813
13909
  /** SMIL children targeting this text shape's canonical `<textPath>` sub-element. */
@@ -13838,6 +13934,24 @@ interface RenderShapeContext {
13838
13934
  readonly siblingIndex: number;
13839
13935
  readonly markup: string;
13840
13936
  }[] | undefined;
13937
+ /**
13938
+ * What an `instanceVariant` transition adds to one EMITTED symbol
13939
+ * definition: inner content appended after the definition's own, and the
13940
+ * scope class the CSS encoding puts on the definition root.
13941
+ *
13942
+ * Keyed by emitted target id rather than definition id: dedicated
13943
+ * per-instance materializations share a definition but must not share the
13944
+ * content a track derives for one of them.
13945
+ *
13946
+ * The children arrive pre-rendered because they are addressed by a
13947
+ * synthesized inner id (`<id>--xf`) that is deliberately NOT a document
13948
+ * shape id, so they cannot travel as `SerializedShape`s through the
13949
+ * id-keyed content map {@link renderResolvedSymbolLibraryDef} builds.
13950
+ */
13951
+ variantTransitionDefinitionContent?: (emittedId: string) => {
13952
+ readonly children: readonly string[];
13953
+ readonly scopeClass?: string;
13954
+ } | undefined;
13841
13955
  }
13842
13956
  /**
13843
13957
  * SymbolInstance - a component instance, emitted as SVG 2 §5.6
@@ -13909,6 +14023,104 @@ declare function renderRadialGradient(id: string, g: RadialGradient, ctx?: Rende
13909
14023
  */
13910
14024
  declare function renderBuiltinMarkerDefs(referenced: MarkerReferenceSets | SerializedShape[], library?: readonly LibraryDef[]): string;
13911
14025
 
14026
+ /**
14027
+ * Variant-transition render planning — the stage that turns an
14028
+ * `instanceVariant` timeline track into emitted document content.
14029
+ *
14030
+ * An `instanceVariant` track cycles a symbol instance through its
14031
+ * definition's variants. SVG has no such concept, so the track has to be
14032
+ * decomposed into concrete per-element animations against the dedicated
14033
+ * per-instance definition that {@link buildSymbolMaterializationPlan}
14034
+ * allocated for it. {@link ./variant-transition-kernels} owns every value in
14035
+ * that decomposition; this module is what places the result in the document.
14036
+ *
14037
+ * It exists because the decomposition used to happen only in the editor, as a
14038
+ * DOM pass over the assembled export. Core emitted the dedicated definition
14039
+ * and nothing inside it, so the CLI, the SDK and the GitHub Action rendered a
14040
+ * variant-animated document frozen on its first variant. The conformance loop
14041
+ * measured that as a 1.95% raster divergence at t=2s.
14042
+ *
14043
+ * Every other authoring-level track is already decomposed by the render plan:
14044
+ * `textPathMorph` into `<animate attributeName="d">` on a generated path def,
14045
+ * gradient stop tracks into `<animate>` on `<stop>`, motion into
14046
+ * `<animateMotion>` + `<mpath>`. `instanceVariant` was the exception.
14047
+ *
14048
+ * The output is four DOM-free channels consumed through
14049
+ * {@link RenderShapeContext} seams that already existed for definition-local
14050
+ * animation, plus the stylesheet and script bodies the two non-SMIL
14051
+ * encodings need. Nothing here locates an element: core BUILDS the symbol,
14052
+ * so every inner element's identity is known at construction time.
14053
+ *
14054
+ * @packageDocumentation
14055
+ */
14056
+
14057
+ /** Which encoding an `instanceVariant` track is decomposed into. */
14058
+ type VariantTransitionTarget = 'smil' | 'css' | 'waapi';
14059
+ /** Inner content and root decoration a transition adds to one definition. */
14060
+ interface VariantTransitionDefinitionContent {
14061
+ readonly children: readonly string[];
14062
+ readonly scopeClass?: string;
14063
+ }
14064
+ interface VariantTransitionRenderPlan {
14065
+ /** Emitted target id → appended content and CSS scope class. */
14066
+ readonly definitionContent: ReadonlyMap<string, VariantTransitionDefinitionContent>;
14067
+ /** Emitted target id → inner shape id → SMIL children. */
14068
+ readonly innerAnimations: ReadonlyMap<string, ReadonlyMap<string, readonly string[]>>;
14069
+ /** Emitted target id → inner shape id → root-open-tag rewrites. */
14070
+ readonly innerRootOverrides: ReadonlyMap<string, ReadonlyMap<string, RenderedRootOverrides>>;
14071
+ /** Gradient definition id → stop index → SMIL children. */
14072
+ readonly gradientStopAnimations: ReadonlyMap<string, ReadonlyMap<number, readonly string[]>>;
14073
+ /** Gradient definition id → SMIL children on the definition root. */
14074
+ readonly gradientRootAnimations: ReadonlyMap<string, readonly string[]>;
14075
+ /** `@keyframes` rules for the CSS encoding. */
14076
+ readonly stylesheet: string | null;
14077
+ /** Self-contained runtime script for the WAAPI encoding. */
14078
+ readonly scriptBody: string | null;
14079
+ /**
14080
+ * Emitted symbol ids a stylesheet or script addresses BY NAME. Definition
14081
+ * deduplication renames collapsed ids, and it rewrites markup channels
14082
+ * only, so an id reached from a script would silently stop resolving.
14083
+ */
14084
+ readonly addressedSymbolIds: ReadonlySet<string>;
14085
+ readonly isEmpty: boolean;
14086
+ }
14087
+ interface VariantTransitionPlanOptions {
14088
+ readonly snapshot: HistorySnapshot;
14089
+ readonly symbols: SymbolMaterializationPlan;
14090
+ readonly target: VariantTransitionTarget;
14091
+ /** The context the owning definition renders its own content with. */
14092
+ readonly shapeContext: RenderShapeContext | undefined;
14093
+ /** Root percentage basis, for the bounds view behind rotation pivots. */
14094
+ readonly parentViewport?: Readonly<SvgViewportSize>;
14095
+ /** Measured text bounds, for inner shapes with no analytic center. */
14096
+ readonly measureShapeTextBounds?: ShapeObjectBoundsHost['measureText'];
14097
+ }
14098
+ /**
14099
+ * Decompose every `instanceVariant` track in a snapshot into emitted content.
14100
+ *
14101
+ * Returns the empty plan when the document has no such track, so a document
14102
+ * without variant animation pays nothing and emits byte-identical output.
14103
+ */
14104
+ declare function planVariantTransitions(options: VariantTransitionPlanOptions): VariantTransitionRenderPlan;
14105
+ /**
14106
+ * The CSS encoding's `@keyframes` rules as a document `<style>` element.
14107
+ *
14108
+ * The DOM encoder inserted this as the root's FIRST child, reasoning that the
14109
+ * keyframes had to be "defined before any element references them". CSS
14110
+ * Animations 1 §3 resolves an `animation-name` against the document's whole
14111
+ * set of `@keyframes` rules regardless of where they appear, so the rules
14112
+ * travel in the ordinary document stylesheet channel instead.
14113
+ */
14114
+ declare function renderVariantTransitionStylesheet(stylesheet: string | null): string;
14115
+ /**
14116
+ * The WAAPI encoding's runtime as a document `<script>` element.
14117
+ *
14118
+ * Routed through the shared inline-body policy: the generated body contains a
14119
+ * bare `<` in its loop condition, so it has to be CDATA-wrapped or the
14120
+ * document is not well-formed XML.
14121
+ */
14122
+ declare function renderVariantTransitionScript(scriptBody: string | null): string;
14123
+
13912
14124
  /**
13913
14125
  * Structured clip/mask group rendering for the headless renderer.
13914
14126
  *
@@ -14098,6 +14310,24 @@ interface RenderPlanOptions {
14098
14310
  * definition shared by untracked sibling instances.
14099
14311
  */
14100
14312
  symbolInstanceInitialVariants?: ReadonlyMap<string, string>;
14313
+ /**
14314
+ * Which encoding an `instanceVariant` track is decomposed into.
14315
+ *
14316
+ * Defaults to `'smil'`, the only encoding that animates a standalone SVG
14317
+ * with no script and no host stylesheet, and the one every raster backend
14318
+ * can seek. `'css'` suits an SVG embedded in HTML; `'waapi'` suits a
14319
+ * consumer that wants to drive the animations from script.
14320
+ */
14321
+ variantTransitionTarget?: VariantTransitionTarget;
14322
+ /**
14323
+ * Measured text bounds, used for the rotation pivot of a variant-animated
14324
+ * inner shape whose center is not analytic (text, containers).
14325
+ *
14326
+ * Distinct from {@link textMeasurementHost}, which measures advance widths
14327
+ * for line breaking. Without it those rotations are dropped and reported as
14328
+ * `unresolved-variant-transition-pivot`.
14329
+ */
14330
+ measureShapeTextBounds?: ShapeObjectBoundsHost['measureText'];
14101
14331
  }
14102
14332
  /** Which root frame attributes to leave off the emitted `<svg>` tag. */
14103
14333
  interface RenderFrameAttributeOmissions {
@@ -14256,14 +14486,6 @@ interface RenderPlan {
14256
14486
  }
14257
14487
  /** The canonical `<defs>` children concatenated in model order. */
14258
14488
  declare function renderPlanDefsBody(defs: RenderPlanDefs): string;
14259
- /**
14260
- * Build the render plan for a snapshot.
14261
- *
14262
- * Pure with respect to output: the same snapshot and options always
14263
- * produce the same plan. Problems found along the way (unsupported
14264
- * shape types, dangling references) are reported through the ambient
14265
- * diagnostics channel.
14266
- */
14267
14489
  declare function buildRenderPlan(snapshot: HistorySnapshot, options?: RenderPlanOptions): RenderPlan;
14268
14490
  /**
14269
14491
  * Extract SVG path `d` data from a serialized shape for motion-path use.
@@ -18567,4 +18789,4 @@ interface RasterQualityReport {
18567
18789
  */
18568
18790
  declare function compareImages(reference: RasterImage, candidate: RasterImage, opts?: CompareImagesOptions): RasterQualityReport;
18569
18791
 
18570
- export { ANIMATION_MANAGER_INTERPOLATION_POLICY, type AdditiveAnimationValue, type Affine2D, type AffineTransformMatrix, type AggregateDocumentFieldKey, type AlphaMode, type AngleInterpolationPolicy, type AnimatablePropertyDescriptor, type AnimationCycleTrack, type AnimationDefinitionTarget, type AnimationKeyframe, type AnimationOperation, type AnimationTimeline, type AnimationTrack, type AnimationTrackTimeSample, type AnimationTrigger, type AnimationTriggerType, type AnyNodeProps, type AppearanceExpansion, type AppearanceExpansionDeps, type AppearanceFillLayer, type AppearanceLayer, type AppearanceLayerKind, type AppearancePaintValue, type AppearanceStrokeLayer, type AppearanceStyleLibraryDef, type AppearanceStyleSource, type AppliedIngestPlan, type ApplyIngestPlanOptions, type ArcCenterParameterization, type ArcParams, type AriaRole, Arrow, type ArrowNodeProps, Audio, type AuthoredGradientGeometry, type AuthoredLengthCoordinate, type AuthoredMarkerGeometry, type AuthoredPaintReference, type AuthoredPatternGeometry, type AuthoredTextCoordinate, type AuthoredTextPosition, type AuthoredUseGeometry, BASE_FILL_LAYER_ID, BASE_STROKE_LAYER_ID, BROWSER_SVG_EXTENSION_URIS, BUILTIN_MARKER_ID_MAP, type BaseFilter, type BaseFilterPrimitive, type BlackAndWhiteFilter, type BlurQuality, type BoundingBox, type BoundsDiagnostic, type BoundsDiagnosticCode, type BoundsRect, type BoundsResult, type BoundsStatus, type BrightnessFilter, type BuildForeignImportReportInput, type BuildSvgDestinationIdentityIndexOptions, type BuiltinShapeGeometryType, CANONICAL_NORMALIZATION_FAULT_POINTS, CC_NS, COLLAB_PROTOCOL_VERSION, COMMON_PROP_DEFAULTS, COMMON_TRANSFORM_NODE_DEFAULTS, CONNECTOR_LABEL_BASELINE_LIFT, CONNECTOR_LABEL_FONT_FAMILY, CONNECTOR_LABEL_FONT_SIZE, CSS_GENERIC_FAMILY_NAMES, CURRENT_SCHEMA_VERSION, CanonicalDocument, type CanonicalNormalizationFaultPoint, type CanonicalRootFramePolicy, type CanonicalSnapshotNormalizationOptions, type CanonicalSnapshotNormalizationResult, type ChannelPainterFilter, Circle, type CircleNodeProps, type CircleShapeGeometry, type ClipMaskDefinition, type ClipMaskGroupDeltaOperation, type ClipMaskOperation, type ClipMaskRenderPlan, type ClipMaskWrapDirective, Cloud, type CloudNodeProps, type CodeFormat, type CodegenOptions, type CollabClock, type CollaborationSnapshot, type CollaborationStamp, type CollaborationState, type ColorInterpolationPolicy, type CommonNodeProps, type CommonTransformNodeProps, type CompareImagesOptions, type ConnectionDirection, type ConnectionDirectionValue, type ConnectionPoint, type ConnectionPointValue, type ConnectorAnchorResolver, type ConnectorEndpointRefValue, type ConnectorLabelAnchor, type ConnectorRouteResult, type ConnectorRoutingModeValue, Container, type ContainerContentBounds, type ContainerNodeProps, ContainerShapeBuilder, type ContainerShapeGeometry, type ContainerTransformOwner, type ContouringDiscreteFilter, type ContouringTableFilter, type ContrastFilter, type CornerShapeValue, type CreateDocumentOptions, type CreateShapeOptions, Cross, type CrossNodeProps, type CrumpledPlasticFilter, type CssAnimationSourceGroup, type CssFunctionToken, type CssLocalUrlToken, type CssProjectedTransformChannel, type CssProjectedTransformStop, type CssTopLevelRange, type CssTransformBox, type CssTransformOrigin, type CssTransformOriginContext, type CssTransformProjection, type CssTransformProjectionStatus, type CssTransformStop, type CssTransformValueIssue, type CustomPatternDef, type CycleBehavior, type CylinderNodeProps, DC_NS, DEFAULT_CONNECTOR_CORNER_RADIUS, DEFAULT_CONNECTOR_LABEL_OFFSET, DEFAULT_CONNECTOR_LABEL_POSITION, DEFAULT_COORDINATE_PRECISION, DEFAULT_FONT_WEIGHT, DEFAULT_RICH_TEXT_STYLE, DOCUMENT_BYTE_KINDS, DOCUMENT_FIELDS, DOCUMENT_FIELD_LIVE_AUTHORITY, DOCUMENT_IMPORT_INTENTS, DOCUMENT_IMPORT_KINDS, DOCUMENT_INGEST_POLICIES, DOCUMENT_SECTION_ORDER, type DecodedSvgSource, type DecorationOutcome, type DeepReadonly, type DefinitionAttribute, type DefinitionAuthoredPlacement, type DefinitionPlacementIndex, type DefinitionPlacementScope, type DeltaEStats, type DescriptiveEmissionOptions, type DiamondNodeProps, type DiffuseLightingFilter, type DocumentBoundsHost, type DocumentBoundsOptions, type DocumentBoundsView, DocumentBuilder, type DocumentBuilderOptions, type DocumentByteKind, type DocumentDefinitionContainer, type DocumentExtension, type DocumentExtensionAttribute, type DocumentExtensionCharacterNode, type DocumentExtensionElementNode, type DocumentExtensionNode, type DocumentFieldAuthority, type DocumentFieldDescriptor, type DocumentFieldKey, type DocumentFieldRegistryGates, type DocumentMetadata, DocumentModel, type DocumentNodeProps, type DocumentReplacementHooks, type DocumentReplacementListener, type DocumentReplacementResult, type DocumentReplacementTransition, type DocumentResourceOperation, type DocumentScript, type DocumentSectionKey, type DocumentSectionListener, type DocumentSectionOrderGates, DocumentSession, type DocumentSessionView, type DocumentShapeNodeProps, type DocumentStyle, type DropShadowFilter, type DuotoneFilter, EASING_CURVES, EasingType, Ellipse, type EllipseNodeProps, type EllipseShapeGeometry, type EmbeddedPayloadRewriter, type EmbeddedPayloadSlotKind, type EmbeddedSvgShapeGeometry, type EmbeddedSvgTransformResult, type EmbeddedSvgViewportOverride, type EmbossFilter, type EnsureTextSpanRangeResult, type EvaluateSvgConditionalProcessingOptions, type ExpandedName, type ExportItemOperation, type Extent1D, type ExtractedVariables, FLOWCHART_GEOMETRY_DEFAULTS, 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 FieldPrecision, type FieldSerialization, type FillType, type FilmGrainFilter, type FilterBlendMode, type FilterChainGroup, type FilterDefinitionEnvelope, type FilterElementAttrs, type FilterLibraryDef, type FilterLightSource, type FilterPrimitive, type FilterPrimitiveType, type FilterType, type FlowchartBoxNodeProps, type FlowchartBoxParams, type FlowchartBoxType, type FontCoverageResult, type FontCoverageStatus, type FontFaceRequest, type FontVariantCssInput, type ForeignImportBucket, type ForeignImportContainer, type ForeignImportFontRequirement, type ForeignImportReport, type ForeignImportReportItem, type ForeignImportVocabulary, type ForeignObjectNodeProps, type FusableTrack, type FusableViewBoxTrack, GEOMETRY_TRACK_PROPERTIES, type GaussianBlurFilter, Gear, type GearNodeProps, type GenerateCodeResult, type GenerateSudokuOptions, type GeneratedFilterEnvelope, type GeneratedSudokuPuzzle, type GeneratedWordSearch, type GlowFilter, type GouacheFilter, type GradientDefinition, type GradientDefinitionEnvelope, type GradientGeometry, type GradientGeometryContext, type GradientLibraryDef, type GradientSpreadMethod, type GradientStop, type GradientStopEnvelope, type GradientTransformMatrix, type GradientUnits, type GraphChangeListener, type GrayscaleFilter, type GroupNodeProps, type GroupPresentationData, type Guide, type GuideDeltaOperation, HEADLESS_SVG_STYLE_ENVIRONMENT, Heart, type HeartNodeProps, type HistorySnapshot, type HueRotateFilter, Hyperlink, type HyperlinkNodeProps, IDENTITY_AFFINE, INGEST_APPLY_STAGES, INGEST_DIAGNOSTIC_CODES, INGEST_DOCUMENT_ROOT_IDENTITY, INGEST_FEATURES, INGEST_FEATURE_CAPABILITIES, INGEST_PLAN_VERSION, INGRESS_INTENTS, INLINE_CHILD_CONTAINER_TYPES, type ImageAttribution, type ImageNodeProps, ImageShape, type IndexedResource, IngestApplicationError, type IngestApplyContext, type IngestApplyStage, type IngestDiagnostic, type IngestDiagnosticCode, type IngestDiagnosticSeverity, type IngestDocumentFieldCandidates, type IngestExternalEffectValue, type IngestExternalFontDescriptorsValue, type IngestExternalFontSourceValue, type IngestFeature, type IngestFeatureCapability, type IngestFeatureCapabilityGates, type IngestFeatureIntentMatrix, type IngestFeatureStatus, type IngestFieldPolicy, type IngestFieldPolicyAction, type IngestFieldPolicyGates, type IngestFieldPolicyMatrix, type IngestNodeDecoration, type IngestNodeDecorations, type IngestPlan, type IngestPlanApplyAdapter, type IngestPlanValue, type IngestReferenceEdgeValue, type IngestResult, type IngestRootFrameValue, type IngestShapeCandidateValue, type IngestSource, type IngestSourceDescriptor, type IngestSourceElementDescriptor, type IngressIntent, type InkBlotFilter, type InlineContainerTransformResult, type InnerGlowFilter, type InnerShadowFilter, type InterpolationCharOffset, type InterpolationColor, type InterpolationGradient, type InterpolationGradientStop, type InterpolationPoint, type InterpolationSplinePoint, type InvertFilter, type JsonObject, type JsonPrimitive, type JsonValue, KNOWN_METADATA_PREFIXES, KNOWN_STATE_KEYS, type KeyedSerializedAnimationKeyframe, LAYER_PRESENTATION_IDS, LIBRARY_ASSEMBLY_KIND_ORDER, LIBRARY_EMIT_ORDER, LIBRARY_KINDS, type LibraryDef, type LibraryDefBase, type LibraryDefOfKind, type LibraryDefinitionIndex, type LibraryIndex, type LibraryKind, type LibrarySource, type LicenseType, type LightSource, Lightning, type LightningNodeProps, Line, type LineEndpointValue, type LineNodeProps, type LineShapeGeometry, type LinearEasingPoint, type LinearGradient, LinearGradientBuilder, type LinearGradientGeometry, type LinearGradientLibraryDef, type LinearGradientLibraryValue, type LiveInterpolationPolicy, type LoweredPathNodeTracks, MARKER_HEIGHT, MARKER_VIEWBOX, MARKER_WIDTH, MATHML_EXTENSION_URI, MAX_COORDINATE_PRECISION, MIGRATIONS, type MarkerDescriptor, type MarkerLibraryDef, type MarkerReferenceSets, type MaterializedIngestNode, type MatrixDecomposition2D, type Measurement, type MeasurementDeltaOperation, type MediaNodeProps, type MetadataDeltaOperation, type MetadataDescriptiveElement, type MigratableVersion, type Migration, type MorphologyFilter, type MorphologyOperator, type MotionBlurFilter, NAMESPACE_VOCABULARIES, NGon, type NGonNodeProps, NON_RENDERING_LIBRARY_KINDS, NON_WIRE_PROP_KEYS, NUMERIC_SHAPE_TRANSFORM_STATE_KEYS, type NamedResource, type NamespaceVocabulary, NestedSvg, type NodeChangeListener, type NodeFactoryMode, NodeSchemaRegistry, type NodeTypePropsMap, type NodeTypeSchema, type NoiseFilter, type OpMetadataPatch, type OpShapeState, type OpacityFilter, type Operation, type OperationValidationIssue, type OperationValidationResult, type OutlineFilter, type OutlinePosition, PAINT_SERVER_PASSTHROUGH_ATTR, PATH_DATA_TRACK_PROPERTIES, POLYGON_GEOMETRY_DEFAULTS, PRESENTATION_SEMANTICS, PUZZLE_DEFAULTS, type ParallelogramNodeProps, type ParseOptions, type ParsedCssAnimation, type ParsedPreserveAspectRatio, type ParsedSvgPathCommand, type ParsedSvgPathCommandType, type ParsedSvgViewBox, type ParsedTimingFunction, Path, type PathBoundsRect, PathCurveType, type PathNodeChannel, type PathNodeGeometry, type PathNodeProps, type PathPoint, PathPointType, type PathShapeGeometry, PatternBuilder, type PatternDefinitionEnvelope, type PatternElement, type PatternFill, type PatternLibraryDef, type PatternParams, type PatternSvgContentResult, type PatternType, type PixelateFilter, type PlanSnapshotExternalEffectsOptions, type PlanSvgAnimationsOptions, type PlanSvgClipMasksOptions, type PlanSvgConditionalProcessingOptions, type PlanSvgContainerHierarchyOptions, type PlanSvgExternalEffectsOptions, type PlanSvgFiltersOptions, type PlanSvgGradientsOptions, type PlanSvgImportOptions, type PlanSvgLeafGeometryOptions, type PlanSvgMarkersOptions, type PlanSvgMetadataOptions, type PlanSvgOccurrenceViewportsOptions, type PlanSvgPaintServerDefinitionsOptions, type PlanSvgPatternsOptions, type PlanSvgResourceDependenciesOptions, type PlanSvgScriptsOptions, type PlanSvgStyleCascadeOptions, type PlanSvgSymbolUsesOptions, type PlanSvgUseOccurrencesOptions, type Point, type PointLightFilter, type PolygonBaseNodeProps, Polyline, type PolylineNodeProps, type PolylineShapeGeometry, type PositioningRectShapeGeometry, type PresentationSemanticContext, type PresentationSemanticEntry, type PresentationSemanticId, type PresentationValueReader, type PresentationWrite, type PreserveAspectRatioAlign, type PreviousPlacement, type PrimitiveChainFilterEnvelope, type ProjectedTextLinePosition, type PropDef, type PropStamp, type PuzzleBounds, type PuzzleOptions, type PuzzlePiece, type PuzzleStyle, type PuzzleTabPattern, RDF_NS, RENDER_DIAGNOSTIC_CODES, RENDER_FEATURES, RENDER_FEATURE_CAPABILITIES, RENDER_TARGETS, RICH_TEXT_STYLE_KEYS, type RadialGradient, RadialGradientBuilder, type RadialGradientGeometry, type RadialGradientLibraryDef, type RadialGradientLibraryValue, type RasterImage, type RasterQualityReport, type RawFilterEnvelope, type RawSvgFilter, type Rect, Rectangle, type RectangleNodeProps, type RectangleShapeGeometry, type RejectedWordSearchWord, type RenderAnimationElementsOptions, type RenderCapability, type RenderCapabilityMatrix, type RenderCapabilityMatrixGates, type RenderDiagnostic, type RenderDiagnosticCode, type RenderDiagnosticSeverity, type RenderFeature, type RenderFeatureCapability, type RenderFeatureCapabilityGates, type RenderFeatureTargetMatrix, type RenderFinalizationOptions, type RenderFrameAttributeOmissions, type RenderOptions, type RenderPlan, type RenderPlanBodyEntry, type RenderPlanDefEntry, type RenderPlanDefKind, type RenderPlanDefinitionContainer, type RenderPlanDefs, type RenderPlanEnvelope, type RenderPlanFrame, type RenderPlanOptions, type RenderPlanShape, type RenderShapeContext, type RenderTarget, type RenderToSvgResult, type RenderedDefinitionAnimationElement, type ResolveSvgClipMaskContext, type ResolveSvgGradientGeometryContext, type ResolveSvgPatternTileContext, type ResolvedConnectorAnchor, type ResolvedConnectorEndpoints, type ResolvedContainerTransform, type ResolvedLibraryGradient, type ResolvedSvgPatternTile, type ResolvedSvgRectRadii, type ResolvedSvgViewport, type ResolvedSvgViewportFrame, type ResolvedSymbolDefinitionRender, type ResolvedSymbolInstanceContent, type ResolvedSymbolViewport, type ResolvedTextFragment, type ResolvedTextSpan, type ResolvedTextSpanChild, type ResolvedTextSpanProjection, type ResourceKey, type Rgba, type RichTextAlignmentBaseline, type RichTextDecoration, type RichTextFontWeight, type RichTextFormatRange, type RichTextLineSpan, type RichTextResolvedData, type RichTextResolvedLine, type RichTextResolvedSegment, type RichTextResolvedStyle, type RichTextRun, type RichTextRuns, type RichTextSegmentsInput, type RichTextStyleDelta, type RichTextTspanAttribute, type RiddledFilter, Ring, type RingNodeProps, type RootViewportFraming, type RoundEdgesFilter, SAXES_SVG_XML_PARSER_HOST, SCRIPT_ANIMATION_GENERATORS, SERIALIZED_SHAPE_STATE_KEYS, SHAPE_ENVELOPE_KEYS, SHAPE_GEOMETRY_DEFAULTS, SHAPE_TRANSFORM_STATE_KEYS, SVGSKETCH_NS, SVGSKETCH_PATH_EXTENSIONS, SVG_CONDITIONAL_PROCESSING_ATTRIBUTES, SVG_IMPORT_CAPABILITY_OWNERS, SVG_NAMESPACE, SVG_NS, SVG_PRESENTATION_PROPERTIES, SVG_WELL_KNOWN_NAMESPACE_URIS, type SaturateFilter, SceneGraph, SceneNode, type SceneTreeReplayHost, type ScriptAnimationCandidateScript, type ScriptAnimationGenerator, type ScriptAnimationSource, type SegmentCurveType, type SepiaFilter, type SerializedAnimationKeyframe, type SerializedAnimationTimeline, type SerializedAnimationTrack, type SerializedCharOffset, type SerializedClipMaskGroup, type SerializedColorGlyph, type SerializedColorGlyphLibrary, type SerializedExportItem, type SerializedGroup, type SerializedMarkerDef, type SerializedPaintServerDef, type SerializedSceneNodePlacement, type SerializedShape, type SerializedShapeState, type SerializedShapeStateKeyGates, type SerializedShapeTransformState, type SerializedSymbolDef, type SerializedVariantAxis, type SerializedViewbox, type SeverityOptions, type SeverityReport, ShapeBuilder, type ShapeEnvelopeKeyGates, type ShapeFilter, type ShapeGeometryDefaultsType, type ShapeGeometryDescriptor, type ShapeGeometryKernel, type ShapeGeometryRendererKey, type ShapeLibraryDefBase, type ShapeLocalObjectBoundsHost, type ShapeMetadata, type ShapeObjectBoundsHost, type ShapeOutlineCapability, ShapeReference, type ShapeReferenceGeometry, type ShapeReferenceNodeProps, type ShapeReferenceTransformResult, type ShapeTransformState, type ShapeTreeVisitor, type SharpenFilter, type SmilAnimationKeyframe, type SmilCalcMode, type SmilKeyframeAttributes, type SmilKeyframeData, type SmilTimingRelation, type SmilTimingTrack, type SmilValue, type SmilValueAttributes, type SmilValueType, type SmilViewBoxAxis, type SmilViewBoxQuartet, type SolveSudokuOptions, type SpecularLightingFilter, SpeechBubble, type SpeechBubbleNodeProps, Spiral, type SpiralNodeProps, type SpliceTextSpanTreeResult, type SplinePointInput, type SpotLightFilter, Square, type SquareNodeProps, Star, type StarNodeProps, type StepPosition, type StepsParams, type StringifyOptions, type StrokeType, type StructureChangeListener, type StyledTextContent, type StyledTextLine, type StyledTextSegment, type StyledTextSource, type SudokuDifficulty, type SudokuGrid, type SudokuRating, type SudokuValidationResult, type SvgAnimationPlan, type SvgAnimationTargetStatus, type SvgAnimationTimelineDefinitionTarget, type SvgAnimationTimelineProjectionHost, type SvgAnimationTimelineShapeBinding, type SvgAppliedResourceDeclaration, type SvgAuthoredAttributeClassification, type SvgAuthoredAttributePlan, type SvgAuthoredAttributeRecord, type SvgAuthoredDeclaration, type SvgClipMaskBinding, type SvgClipMaskBindingStatus, type SvgClipMaskDefinition, type SvgClipMaskDefinitionMutation, type SvgClipMaskGeometryPlacement, type SvgClipMaskObjectBounds, type SvgClipMaskPlan, type SvgClipMaskRegion, type SvgClipMaskRepresentation, type SvgClipMaskResolution, type SvgClipMaskStatus, type SvgClipMaskType, type SvgClipMaskUnits, type SvgConditionalProcessingCandidate, type SvgConditionalProcessingCondition, type SvgConditionalProcessingPlan, type SvgContainerHierarchy, type SvgContainerHierarchyNode, type SvgContainerHierarchyPlacement, type SvgContainerKind, type SvgCssAnimationCandidate, type SvgCssKeyframeDeclaration, type SvgCssKeyframeStopPlan, type SvgCssKeyframesPlan, type SvgCssSpecificity, type SvgDescriptiveElement, type SvgDestinationIdAllocator, type SvgDestinationIdAssignment, type SvgDestinationIdRequest, type SvgDestinationIdentityChannel, type SvgDestinationIdentityIndex, type SvgDestinationIdentityOwner, type SvgDocumentMetadataCandidate, type SvgElementMetadataCandidate, type SvgElementStylePlan, type SvgEmbeddedFrameCandidate, type SvgEmbeddedFrameState, type SvgExternalAssetCandidate, type SvgExternalAssetStatus, type SvgExternalEffectsPlan, type SvgExternalFontCandidate, type SvgFilterBinding, type SvgFilterBindingStatus, type SvgFilterCandidate, type SvgFilterCandidateStatus, type SvgFilterOperation, type SvgFilterOperationStatus, type SvgFilterPlan, type SvgFilterRegion, type SvgFramingRect, type SvgGradientCandidate, type SvgGradientFallback, type SvgGradientGeometryValue, type SvgGradientPaintBinding, type SvgGradientPlan, type SvgGradientStatus, type SvgGradientStopCandidate, type SvgGradientTransform, type SvgHtmlMetadataElement, type SvgImportCapabilityAuthority, type SvgImportCapabilityOwner, type SvgImportCapabilityOwnershipGates, SvgImportError, type SvgImportPlan, type SvgImportProjectionContext, type SvgIngestDiagnosticContext, type SvgLeafCanonicalType, type SvgLeafGeometryCandidate, type SvgLeafGeometryPlan, type SvgLeafGeometryStatus, type SvgLengthContext, type SvgLengthToken, type SvgLocalReferenceChannel, type SvgMarkerAnimationCandidate, type SvgMarkerAuthoredGeometry, type SvgMarkerCandidate, type SvgMarkerContentCandidate, type SvgMarkerPlan, type SvgMarkerStatus, type SvgMetadataPlan, type SvgNodeProps, type SvgOccurrenceViewportContext, type SvgOccurrenceViewportPlan, type SvgPaintServerDefinitionCandidate, type SvgPaintServerDefinitionPlan, type SvgParsedStyleAttribute, type SvgPathAffineMatrix, type SvgPathCommandType, type SvgPathExtensionCommandType, type SvgPathMetricPoint, type SvgPathMetrics, type SvgPathMetricsOptions, type SvgPathParseError, type SvgPathParseErrorCode, type SvgPathParseOptions, type SvgPathParseResult, type SvgPathParserExtensions, type SvgPatternCandidate, type SvgPatternContentOccurrence, type SvgPatternFallback, type SvgPatternPaintBinding, type SvgPatternPlan, type SvgPatternResourceCandidate, type SvgPatternStatus, type SvgPatternTransform, type SvgPatternValue, type SvgPlannedScript, type SvgPresentationAttributeApplicability, type SvgPrimitiveChainFilter, type SvgPropertySemantics, type SvgResourceDependencyClosure, type SvgResourceDependencyComponent, type SvgResourceDependencyEdge, type SvgResourceDependencyKind, type SvgResourceDependencyMaterialization, type SvgResourceDependencyPlan, type SvgResourceElementKind, type SvgResourceProperty, type SvgScriptCandidate, type SvgScriptPlan, type SvgScriptScope, type SvgSmilAnimationCandidate, type SvgSmilAnimationKind, type SvgSourceAttribute, type SvgSourceCharacterNode, SvgSourceDecodingError, type SvgSourceDocument, type SvgSourceElement, type SvgSourceElementIdPlan, type SvgSourceGeneratedIdPlan, type SvgSourceHref, type SvgSourceIdOccurrence, type SvgSourceIdentifierPlan, type SvgSourceIdentifierPlanOptions, type SvgSourceIndex, type SvgSourceLocalReference, type SvgSourceNode, type SvgSourceReferenceRewrite, type SvgSourceResourceIdPlan, type SvgSourceResourceKind, type SvgStyleCascadePlan, type SvgStyleDeclarationOrigin, type SvgStyleEnvironment, type SvgStyleRulePlan, type SvgStylesheetPlan, type SvgSymbolDefinitionCandidate, type SvgSymbolDefinitionKind, type SvgSymbolUseCandidate, type SvgSymbolUseGeometry, type SvgSymbolUsePlan, type SvgSymbolUseStatus, type SvgSymbolUseTransform, type SvgTextMetricsHost, type SvgTextSpanNodeCandidate, type SvgTextSpanTarget, type SvgTextSpanTreeCandidate, type SvgUnboundStylesheetResourceReference, type SvgUseDefinitionComponent, type SvgUseOccurrence, type SvgUseOccurrenceEdge, type SvgUseOccurrencePlan, type SvgUseOccurrenceRole, type SvgUseResolution, type SvgUseResolutionStatus, type SvgUseResourceCapability, type SvgUseResourcePolicy, type SvgUseResourceRoot, type SvgUseSourceResolution, type SvgUseSourceResolutionStatus, type SvgViewCandidate, type SvgViewState, type SvgViewportDiagnostic, type SvgViewportDimensions, type SvgViewportFrame, type SvgViewportSize, type SvgViewportStatus, type SvgXmlAttributeInput, type SvgXmlCharacterNodeInput, type SvgXmlElementInput, type SvgXmlNodeInput, type SvgXmlParserHost, SvgXmlParserHostError, type SvgXmlParserHostResult, type SvgXmlSourceSpan, type SvgatorPayload, type SvgatorProjectionHost, type SvgatorProjectionResult, Switch, type SwitchNodeProps, type SymbolInstanceGeometry, type SymbolInstanceMaterialization, type SymbolInstanceNodeProps, type SymbolInstanceTransformResult, type SymbolLengthContext, type SymbolLibraryDef, type SymbolMaterialization, type SymbolMaterializationDiagnostic, type SymbolMaterializationDiagnosticCode, type SymbolMaterializationPlan, type SymbolMaterializationPlanOptions, type SymbolResolutionDiagnostic, type SymbolResolutionDiagnosticCode, type SymbolViewportDiagnostic, type SymbolViewportDiagnosticCode, type SymbolViewportHost, TEXT_PATH_GENERATED_ID_PREFIX, TYPED_FIELD_PREDICATES, type TemplateVariable, type TemplateVariableMode, type TemplateVariableOperation, type TemplateVariableSource, type TemplateVariableType, type TerminatorNodeProps, Text, type TextFormatOperation, type TextLayoutCaret, type TextLayoutCaretDraft, TextLayoutEngine, type TextLayoutGlyph, type TextLayoutGlyphDraft, type TextLayoutLine, type TextLayoutMeasurementRequest, type TextLayoutPoint, type TextLayoutProduct, type TextLayoutProductDraft, type TextLayoutProductHost, type TextLayoutRect, type TextLayoutRequest, type TextLayoutResult, type TextLayoutSegment, type TextLayoutViewport, type TextLayoutVisualLine, type TextLinePosition, type TextMeasurementHost, type TextNodeProps, type TextObjectBoundsMeasurement, type TextPathReference, type TextShapeGeometry, type TextShapeInsideGeometry, type TextShapeSpan, type TextSpanAnimationTarget, type TextSpanNode, type TextSpanRotationProjection, type TextSpanTree, type TextSplice, Timeline, Track, type TransferFunc, type TransformFusionPlan, type TransformStateLike, type TrapezoidNodeProps, Triangle, type TriangleNodeProps, VARIANT_INTERPOLATION_POLICY, type ValidationError, type ValidationResult, type VariableMap, type VariantAnimationElementSpec, type VariantCssPlan, type VariantCssSymbolPlan, type VariantSmilInnerAction, type VariantSmilOp, type VariantSmilSymbolPlan, type VariantTransitionInput, type VariantTransitionInstanceView, type VariantTransitionTimelineLike, type VariantWaapiPlan, type VariantWaapiSymbolPlan, Video, View, type ViewBoxFusionPlan, type ViewNodeProps, type ViewShapeGeometry, type Viewbox, type VocabularyAttribute, type VocabularyAttributeSource, type VocabularyAttributes, type VocabularyClaim, type VocabularyProjection, WRAPPER_PRESENTATION_IDS, type WarpFilter, type WarpType, type WatercolorFilter, type WireAliasShapeStateFields, type WireOnlyShapeStateFields, type WordSearchAxes, type WordSearchCellPath, type WordSearchDirection, type WordSearchLintResult, type WordSearchOptions, type WordSearchPlacement, type WordSearchPrimitiveMask, XHTML_EXTENSION_URI, type XrayFilter, accumulateAnimationValue, addAnimationValues, addSmilPointsValues, affine, affineFromArray, affineToArray, almostEqualAffine, animationBackwardsFillTrack, animationCycleDuration, animationDefinitionTargetShapeId, animationTrackActiveEnd, animationTrackDocumentBegin, appearanceLayers, appendAppearanceLayer, applyAffineToPoint, applyAffineToVector, applyAppearanceStyle, applyClipMaskGroupDelta, applyClipMaskPlanToShapes, applyCssAnimationLonghandOverrides, applyGuideDeltaOp, applyIngestPlan, applyMeasurementDeltaOp, applyMetadataDeltaOp, applyOpToSnapshot, applyOpsInPlace, applyOpsToSnapshot, applyOpsToSnapshotWithAccepted, applyPathNodeValue, applyRichTextFormat, applyTextSplice, applyTextTransform, applyTimingFunctionToKeyframe, arcEndpointToCenter, areTracksTimingEquivalent, around, assembleLibraryDefs, assembleSvgFromPlan, assertIngestFeatureRegistry, assertIngestPolicyRegistry, assertNamespaceVocabularyRegistry, assertRasterImage, assertSvgImportCapabilityOwners, authoredPaintDeclarations, baseFillLayer, baseStrokeLayer, buildCompoundTransformValues, buildDefinitionPlacementIndex, buildForeignImportReport, buildFreshMetadataBlock, buildGuideDeltaOps, buildManagedChildren, buildManagedDescription, buildMeasurementDeltaOps, buildMetadataDeltaOps, buildRenderPlan, buildSmilKeyframeData, buildSmilKeyframes, buildSvgDestinationIdentityIndex, buildSvgIngestPlan, buildSymbolMaterializationPlan, buildViewBoxSmilKeyframeData, canonicalPolygonTransformString, canonicalTransformMatrix, canonicalTransformString, chainHasTargetedEffects, claimElementThroughVocabulary, classifyIngestDiagnostic, classifySvgExternalAssetUrl, clipMaskDefinitionFromGroup, clipMaskDefinitionsFromGroups, clipMaskGroupDefId, clipMaskGroupDefinitionId, clipMaskGroupIsRawBacked, clipMaskGroupWithDefinition, clipMaskOwnedDefIds, cloneTextSpanTree, collaborationResourceKey, collectDocumentEnvelopeLibraryReferenceIds, collectFontFacesFromPlan, collectFontFamiliesFromPlan, collectMarkerReferences, collectReferencedLibraryDefs, collectReferencedMarkerIds, collectSvgFragmentLibraryReferenceIds, collectUnknownDocumentFields, compareImages, compareOrderKeys, composeDecomposedTransformMatrix, compositeOver, computeArrowVertices, computeCloudPath, computeCrossVertices, computeDashArray, computeFlowchartBoxPath, computeGearPath, computeGearVertices, computeHeartPath, computeLightningVertices, computePolygonVertices, computeRectanglePath, computeRingPath, computeSpeechBubbleVertices, computeSpiralPath, computeSplinePath, computeStarVertices, connectorLabelAnchor, containerTransformNeedsContentPivot, convertGradientUnits, createDocument, createSceneNode, createShape, createSvgDestinationIdAllocator, createSvgPathMetrics, createTextLayoutKey, createTextLayoutProduct, createViewbox, createWordSearchPrimitiveMask, cssAnimationFillField, cssNamedColorToRgb, cubicBezierExtent1D, cubicBezierToEasingFields, customPatternDefToLibraryDef, declaredRichTextDeltaKeys, decodeCssEscapes, decodeSvgSourceBytes, decomposeAffine2D, decoratePlanNodes, decorateSnapshotShapes, dedupeFontFaces, defaultVariableMode, deltaE2000, deriveRichTextFormatRanges, deriveSegments, deriveTextSplice, derivedConnectionPoints, detachAppearanceStyle, documentObjectBounds, ellipticalArcBounds, emptyDocumentMetadata, ensureTextSpanRange, escXml, evaluateEasing, evaluateFontCoverage, evaluateKeyframeEasing, evaluateLinearEasing, evaluateParsedTimingFunction, evaluateSteps, evaluateSvgConditionalProcessing, expandAppearanceStack, extractVariables, filterAttr, filterChainExtendsBounds, filterChainGroupId, filterChainGroups, filterDefinitionEnvelope, filterReferenceValue, finalizeRenderPlan, findShapeById, fingerprintCssAnimationDocumentStyles, fingerprintCssAnimationInlineStyles, fingerprintCssAnimationTrack, fingerprintIngestSource, flattenShapeStateTree, flattenStateExtra, flattenUnknownDocumentFields, foldSchemaV2AncestorTransformIntoMatrix, fontFaceKey, forEachAppearanceLayerRef, forEachAppearanceStyleRef, forEachLibraryRefInState, forEachMarkerRefInState, forEachReachableShape, forEachShapeInLibraryDefs, formatCssFontFamilyList, formatOperationValidationIssues, formatSmilKeySpline, formatSmilKeyTime, freezeIngestPlan, freezeSiblingOrderKeys, generateCode, generateCodeWithDiagnostics, generateCssCode, generateD3Code, generateId, generatePatternSvgContent, generatePuzzlePieces, generateReactCode, generateSudokuPuzzle, generateSvgCode, generateVueCode, generateWordSearch, geometryDefinitionId, geometryState, getBuiltInMarkerDefs, getEasingCubicBezier, getEffectivePrecision, getIngestFeatureCapability, getIngestFieldPolicy, getKeyframeCubicBezier, getLicenseLabel, getLicenseUrl, getMarkerDescriptors, getPatternElements, getShapeGeometryKernel, getSmilAccumulate, getSmilAdditive, getSmilBeginValue, getSmilFillMode, getSmilMotionKeyPoints, getSmilRepeatCount, getSmilSetBeginValue, getSmilTrackDuration, getSvgCoordinateAttributePrecision, getSvgPropertySemantics, getSvgSourceAttribute, getSvgSourceHref, getWordSearchDirections, gradientStopPoint, gradientTransformAttribute, hasAnyTypedMetadataField, hasEmittableSmilSimpleDuration, hasOpaqueSvgAncestor, hasSvgSourceAttribute, importSvg, importSvgWithDiagnostics, indexLibraryDefinitions, inferSvgCoordinatePrecision, initialOrderKeys, injectClipMaskReference, inspectCssTransformValue, interpolateAngle, interpolateCharOffsetArray, interpolateColor, interpolateDasharrayLists, interpolateGradient, interpolateNumericArray, interpolatePathData, interpolatePlainObject, interpolatePointArray, interpolatePolylinePoints, interpolateShapeTrees, interpolateSplinePointArray, invertAffine, isColorValue, isConnectorLineState, isCssAnimationDeclarationName, isCssGenericFamilyName, isCssNamedColor, isDefaultKeyPoints, isDefaultKeyTimes, isDocumentImportIntent, isEntirelyUnembeddableFamilyList, isFiniteAffineArray, isGeometryTrackProperty, isGradientLike, isIdentityAffine, isIdentityLinearSplines, isIndefiniteSetTrack, isIndefiniteSmilSimpleDuration, isNumericArray, isPathDataTrackProperty, isPathNodeTrack, isReusablePatternTile, isSafeGradientRootAttributeName, isSafePatternRootAttributeName, isSetSequenceTrack, isSvgPresentationProperty, isTextPathGeneratedId, isUnembeddableFamilyName, isValidOrderKey, keyBetween, keysBetween, layerFilterTargets, layerPaints, layerState, layoutText, legacyEndpointMarkerId, lerpNumber, linearGradient, linearGradientEnvelope, lintWordSearchOptions, lowerPathNodeTracks, luma709, mapAnimationTrackTime, matchCubicBezierToPreset, materializeSceneTreeOrderKeys, matrixTransformPart, maxCollaborationTimestamp, mergeRichTextStyle, migrateSnapshot, migrateV11toV12, migrateV14toV15, migrateV15toV16, migrateV16toV17, migrateV17toV18, migrateV18toV19, migrateV6toV7, migrateViewboxSidecarToViews, motionPathD, moveResourceById, multiplyAffine, mutateSvgClipMaskDefinitionMarkup, namespaceVocabularies, namespaceVocabulary, needsAppearanceStack, nodeSchemas, normalizeClipMaskGroups, normalizePaintServerDef, normalizeRichTextRuns, normalizeRichTextStyle, normalizeRichTextStyleDelta, normalizeSmilPointsValue, normalizeSnapshotStructure, normalizeSnapshotToCanonicalDocument, orderSiblings, paintingLayers, parseColor, parseCssAnimationShorthand, parseCssTimingFunction, parseCssTransformOrigin, parseDocument, parseDocumentWithDiagnostics, parseFontFamilyList, parseInterpolationNumbers, parsePathNodeProperty, parsePreserveAspectRatio, parseSmilAdditive, parseSmilClockValue, parseSmilDuration, parseSmilFillField, parseSmilKeySplines, parseSmilKeyTimes, parseSmilRepeatSettings, parseSmilValues, parseSvgAbsoluteLength, parseSvgLength, parseSvgLengthList, parseSvgLengthToken, parseSvgPathData, parseSvgRootFrame, parseSvgSourceDocument, parseSvgStyleAttribute, parseSvgTransformList, parseSvgViewBox, parseSvgatorPayload, parseVariableArgs, parseWordSearchWords, partitionShapeStateTree, partitionStateExtra, partitionUnknownDocumentFields, pathCommandStructuresMatch, pathDataBounds, pathNodeTracksAreSuperseded, pattern, patternDefinitionEnvelope, patternLibraryDefToCustomPatternDef, patternTileSize, pickCssAnimationListItem, plainTextOf, plainTextStyle, planClipMaskGroups, planSnapshotExternalEffects, planSvgAnimations, planSvgAuthoredAttributes, planSvgClipMasks, planSvgConditionalProcessing, planSvgContainerHierarchy, planSvgDocumentExtensions, planSvgEmbeddedFrames, planSvgExternalEffects, planSvgFilters, planSvgGradients, planSvgImport, planSvgLeafGeometry, planSvgMarkers, planSvgMetadata, planSvgOccurrenceViewports, planSvgPaintServerDefinitions, planSvgPatterns, planSvgResourceDependencies, planSvgScripts, planSvgSourceIdentifiers, planSvgStyleCascade, planSvgSymbolUses, planSvgUseOccurrences, planSvgViews, planTransformFusion, planVariantTransitionsCss, planVariantTransitionsSmil, planVariantTransitionsWaapi, planViewBoxFusion, preferredSubsetsForText, premultiply, prepareSvgAuthorCssForLiveProjection, prepareSvgExternalAssetUrlForLiveProjection, prepareSvgMarkupForLiveProjection, prepareSvgXmlSource, preserveAspectRatioAlignFactor, projectClipMaskDefinitionAnimations, projectCssTransformStops, projectDefinitionAnimations, projectPresentation, projectPresentationEntry, projectSceneTreeOntoClipMaskGroups, projectSceneTreeOntoShapes, projectSvgAnimationPlan, projectSvgAnimationTimeline, projectSvgImportToIngestPlan, projectSvgImportToSnapshot, projectSvgSourceNodes, projectSvgatorAnimation, projectTextLinePosition, projectTextSpanRotations, promoteManagedDescription, promoteRebasedShapeUpdateClock, pruneAndWrapSubtree, quadraticBezierExtent1D, radialGradient, radialGradientEnvelope, rebaseRichTextFormatRanges, rebaseRichTextRuns, recognizeScriptAnimation, reflectCubicBezier, registerNamespaceVocabulary, registeredExtensionUris, registeredShapeGeometryTypes, removeResourceById, removeResourceByKey, removeResourceByName, removeTrackKeyframe, renderAnimationElements, renderBuiltinMarkerDefs, renderCircle, renderClipMaskDefinitionAnimationElements, renderClipMaskDefinitionShape, renderDefinitionAnimationElements, renderDescriptiveElements, renderDocumentAnimationElements, renderDocumentExtensionAttributes, renderDocumentExtensionNodes, renderDocumentExtensions, renderDocumentScripts, renderDocumentStyles, renderEllipse, renderFilterDefs, renderFilterElement, renderFilterLibraryDef, renderFilterPrimitive, renderFilterPrimitivesForType, renderFlowchartBox, renderForeignObject, renderGradientDefs, renderGradientStopAnimationElement, renderImage, renderLibraryDef, renderLibraryDefs, renderLine, renderLinearGradient, renderLinearGradientLibraryDef, renderMarkerLibraryDef, renderPaintServerDefs, renderPatternLibraryDef, renderPlanDefsBody, renderPolygonShape, renderPolyline, renderRadialGradient, renderRadialGradientLibraryDef, renderRectangle, renderReferencedLibraryDefs, renderResolvedSymbolDefinitionForest, renderResolvedSymbolDefinitionSubtree, renderResolvedSymbolLibraryDef, renderShape, renderShapeContextForLibrary, renderSpline, renderSvgPrimitiveChainFilter, renderSymbolInstance, renderSymbolLibraryDef, renderTemplateVariablesStyle, renderText, renderTextSpanAnimationElements, renderToSvg, renderToSvgWithDiagnostics, replaceClipMaskDefinition, replaceClipMaskGroupsInSceneTree, replaySceneTreePlacements, requiredDecimalPrecision, requiredSubsetsForText, resolveAppearanceStyle, resolveConnectorAnchorFromDocument, resolveConnectorEndpoints, resolveContainerTransform, resolveContainerTransformFromContentBounds, resolveCssAnimationEasingType, resolveEmbeddedSvgTransform, resolveEmbeddedSvgViewportFrameBounds, resolveFontStyle, resolveFontWeight, resolveGradientGeometry, resolveGradientLibraryDef, resolveInlineContainerTransform, resolveMetadataQName, resolvePasteWrapperViewportSize, resolvePathDAtTime, resolvePatternLibraryDef, resolveRichTextStyleAt, resolveRootViewportFraming, resolveShapeGeometry, resolveShapeLocalObjectBounds, resolveShapeObjectBounds, resolveShapeReferenceTransform, resolveStyledTextLines, resolveSvgGradientGeometry, resolveSvgLengthToken, resolveSvgPatternTile, resolveSvgQName, resolveSvgRectRadii, resolveSvgTextSpanTarget, resolveSvgViewport, resolveSymbolDefinitionForestRootIds, resolveSymbolInstanceContent, resolveSymbolInstanceShapes, resolveSymbolInstanceTransform, resolveSymbolViewport, resolveTextSpanProjection, rewriteDocumentEmbeddedPayloads, rewriteIdReferencesInMarkup, rewriteShapeStateEmbeddedPayloads, rewriteSvgResourceReferenceValue, richTextFontVariantCss, richTextLineSpans, richTextRunsFromState, richTextStyleDelta, richTextStyleDeltasEqual, richTextStylesEqual, richTextTspanAttributes, rootMetadataAttrs, rootPaintServerDefId, rotateAffine, roundCoord, roundMarkupCoordinates, roundNumberString, roundSerializedShape, roundSnapshot, routeConnector, runsFromSegments, sameSize, sampleAnimationTrackTime, sampleTextForSubsets, sanitizeRichTextFormatRanges, sanitizeXmlId, scaleAffine, scanCssFunctionTokens, scanCssLocalUrlTokens, senderCorrectionsForOp, serializeSvgPathData, serializedPathNodeGeometry, serializedPresentationReader, severity, shapeAppearanceLayers, shapeAppearanceStyle, shapeLocalObjectBounds, shapeLocalObjectCenter, shapeNeedsAppearanceExpansion, shapeObjectBoundsInSpace, shapeOutlineCapability, shouldRoundSvgCoordinateAttribute, skewXAffine, skewYAffine, smilKeyframeAttributes, snapshotBoundsView, sniffDocumentBytes, solveCubicBezier, solveSudoku, spliceTextSpanTree, splinePathBounds, splitAppearanceForStyle, splitCssAnimationList, splitCssTopLevel, splitCssTopLevelRanges, splitTopLevelElements, srgbToLab, ssimPlane, stringifyDocument, stripAnimationDeclarations, stripCssAnimationInlineStyle, subsetsForCodePoint, substituteString, substituteVariables, symbolDefinitionSemanticHash, symbolInstanceTargetId, synthesizeCssAnimationShorthand, templateVariablesCss, textPathGeneratedId, textSpanEffectiveRotations, textSpanIds, textSpanNodeById, textSpanRangeByIds, transformSplice, transformSvgPathData, translateAffine, translateSvgPathData, tryParseSvgTransformList, unmatchedDecorationDiagnostics, updateGradientLibraryDef, upsertResourceById, upsertResourceByKey, upsertResourceByName, upsertTrackKeyframe, validateDocumentOperations, validateOperation, validatePresenceOperation, validateSnapshot, validateSudokuPuzzle, verticesToPath, visitShapeTree, visitSnapshotShapeTrees, writeAppearanceLayers };
18792
+ export { ANIMATION_MANAGER_INTERPOLATION_POLICY, type AdditiveAnimationValue, type Affine2D, type AffineTransformMatrix, type AggregateDocumentFieldKey, type AlphaMode, type AngleInterpolationPolicy, type AnimatablePropertyDescriptor, type AnimationCycleTrack, type AnimationDefinitionTarget, type AnimationKeyframe, type AnimationOperation, type AnimationTimeline, type AnimationTrack, type AnimationTrackTimeSample, type AnimationTrigger, type AnimationTriggerType, type AnyNodeProps, type AppearanceExpansion, type AppearanceExpansionDeps, type AppearanceFillLayer, type AppearanceLayer, type AppearanceLayerKind, type AppearancePaintValue, type AppearanceStrokeLayer, type AppearanceStyleLibraryDef, type AppearanceStyleSource, type AppliedIngestPlan, type ApplyIngestPlanOptions, type ArcCenterParameterization, type ArcParams, type AriaRole, Arrow, type ArrowNodeProps, Audio, type AuthoredGradientGeometry, type AuthoredLengthCoordinate, type AuthoredMarkerGeometry, type AuthoredPaintReference, type AuthoredPatternGeometry, type AuthoredTextCoordinate, type AuthoredTextPosition, type AuthoredUseGeometry, BASE_FILL_LAYER_ID, BASE_STROKE_LAYER_ID, BROWSER_SVG_EXTENSION_URIS, BUILTIN_MARKER_ID_MAP, type BaseFilter, type BaseFilterPrimitive, type BlackAndWhiteFilter, type BlurQuality, type BoundingBox, type BoundsDiagnostic, type BoundsDiagnosticCode, type BoundsRect, type BoundsResult, type BoundsStatus, type BrightnessFilter, type BuildForeignImportReportInput, type BuildSvgDestinationIdentityIndexOptions, type BuiltinShapeGeometryType, CANONICAL_NORMALIZATION_FAULT_POINTS, CC_NS, COLLAB_PROTOCOL_VERSION, COMMON_PROP_DEFAULTS, COMMON_TRANSFORM_NODE_DEFAULTS, CONNECTOR_LABEL_BASELINE_LIFT, CONNECTOR_LABEL_FONT_FAMILY, CONNECTOR_LABEL_FONT_SIZE, CSS_GENERIC_FAMILY_NAMES, CURRENT_SCHEMA_VERSION, CanonicalDocument, type CanonicalNormalizationFaultPoint, type CanonicalRootFramePolicy, type CanonicalSnapshotNormalizationOptions, type CanonicalSnapshotNormalizationResult, type CatmullRomCubicSegment, type ChannelPainterFilter, Circle, type CircleNodeProps, type CircleShapeGeometry, type ClipMaskDefinition, type ClipMaskGroupDeltaOperation, type ClipMaskOperation, type ClipMaskRenderPlan, type ClipMaskWrapDirective, Cloud, type CloudNodeProps, type CodeFormat, type CodegenOptions, type CollabClock, type CollaborationSnapshot, type CollaborationStamp, type CollaborationState, type ColorInterpolationPolicy, type CommonNodeProps, type CommonTransformNodeProps, type CompareImagesOptions, type ConnectionDirection, type ConnectionDirectionValue, type ConnectionPoint, type ConnectionPointValue, type ConnectorAnchorResolver, type ConnectorEndpointRefValue, type ConnectorLabelAnchor, type ConnectorRouteResult, type ConnectorRoutingModeValue, Container, type ContainerContentBounds, type ContainerNodeProps, ContainerShapeBuilder, type ContainerShapeGeometry, type ContainerTransformOwner, type ContouringDiscreteFilter, type ContouringTableFilter, type ContrastFilter, type CornerShapeValue, type CreateDocumentOptions, type CreateShapeOptions, Cross, type CrossNodeProps, type CrumpledPlasticFilter, type CssAnimationSourceGroup, type CssFunctionToken, type CssLocalUrlToken, type CssProjectedTransformChannel, type CssProjectedTransformStop, type CssTopLevelRange, type CssTransformBox, type CssTransformOrigin, type CssTransformOriginContext, type CssTransformProjection, type CssTransformProjectionStatus, type CssTransformStop, type CssTransformValueIssue, type CustomPatternDef, type CycleBehavior, type CylinderNodeProps, DC_NS, DEFAULT_CONNECTOR_CORNER_RADIUS, DEFAULT_CONNECTOR_LABEL_OFFSET, DEFAULT_CONNECTOR_LABEL_POSITION, DEFAULT_COORDINATE_PRECISION, DEFAULT_FONT_WEIGHT, DEFAULT_RICH_TEXT_STYLE, DOCUMENT_BYTE_KINDS, DOCUMENT_FIELDS, DOCUMENT_FIELD_LIVE_AUTHORITY, DOCUMENT_IMPORT_INTENTS, DOCUMENT_IMPORT_KINDS, DOCUMENT_INGEST_POLICIES, DOCUMENT_SECTION_ORDER, type DecodedSvgSource, type DecorationOutcome, type DeepReadonly, type DefinitionAttribute, type DefinitionAuthoredPlacement, type DefinitionPlacementIndex, type DefinitionPlacementScope, type DeltaEStats, type DescriptiveEmissionOptions, type DiamondNodeProps, type DiffuseLightingFilter, type DocumentBoundsHost, type DocumentBoundsOptions, type DocumentBoundsView, DocumentBuilder, type DocumentBuilderOptions, type DocumentByteKind, type DocumentDefinitionContainer, type DocumentExtension, type DocumentExtensionAttribute, type DocumentExtensionCharacterNode, type DocumentExtensionElementNode, type DocumentExtensionNode, type DocumentFieldAuthority, type DocumentFieldDescriptor, type DocumentFieldKey, type DocumentFieldRegistryGates, type DocumentMetadata, DocumentModel, type DocumentNodeProps, type DocumentReplacementHooks, type DocumentReplacementListener, type DocumentReplacementResult, type DocumentReplacementTransition, type DocumentResourceOperation, type DocumentScript, type DocumentSectionKey, type DocumentSectionListener, type DocumentSectionOrderGates, DocumentSession, type DocumentSessionView, type DocumentShapeNodeProps, type DocumentStyle, type DropShadowFilter, type DuotoneFilter, EASING_CURVES, EasingType, Ellipse, type EllipseNodeProps, type EllipseShapeGeometry, type EmbeddedPayloadRewriter, type EmbeddedPayloadSlotKind, type EmbeddedSvgShapeGeometry, type EmbeddedSvgTransformResult, type EmbeddedSvgViewportOverride, type EmbossFilter, type EnsureTextSpanRangeResult, type EvaluateSvgConditionalProcessingOptions, type ExpandedName, type ExportItemOperation, type Extent1D, type ExtractedVariables, FLOWCHART_GEOMETRY_DEFAULTS, 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 FieldPrecision, type FieldSerialization, type FillType, type FilmGrainFilter, type FilterBlendMode, type FilterChainGroup, type FilterDefinitionEnvelope, type FilterElementAttrs, type FilterLibraryDef, type FilterLightSource, type FilterPrimitive, type FilterPrimitiveType, type FilterType, type FlowchartBoxNodeProps, type FlowchartBoxParams, type FlowchartBoxType, type FontCoverageResult, type FontCoverageStatus, type FontFaceRequest, type FontVariantCssInput, type ForeignImportBucket, type ForeignImportContainer, type ForeignImportFontRequirement, type ForeignImportReport, type ForeignImportReportItem, type ForeignImportVocabulary, type ForeignObjectNodeProps, type FusableTrack, type FusableViewBoxTrack, GEOMETRY_TRACK_PROPERTIES, type GaussianBlurFilter, Gear, type GearNodeProps, type GenerateCodeResult, type GenerateSudokuOptions, type GeneratedFilterEnvelope, type GeneratedSudokuPuzzle, type GeneratedWordSearch, type GlowFilter, type GouacheFilter, type GradientDefinition, type GradientDefinitionEnvelope, type GradientGeometry, type GradientGeometryContext, type GradientLibraryDef, type GradientSpreadMethod, type GradientStop, type GradientStopEnvelope, type GradientTransformMatrix, type GradientUnits, type GraphChangeListener, type GrayscaleFilter, type GroupNodeProps, type GroupPresentationData, type Guide, type GuideDeltaOperation, HEADLESS_SVG_STYLE_ENVIRONMENT, Heart, type HeartNodeProps, type HistorySnapshot, type HueRotateFilter, Hyperlink, type HyperlinkNodeProps, IDENTITY_AFFINE, INGEST_APPLY_STAGES, INGEST_DIAGNOSTIC_CODES, INGEST_DOCUMENT_ROOT_IDENTITY, INGEST_FEATURES, INGEST_FEATURE_CAPABILITIES, INGEST_PLAN_VERSION, INGRESS_INTENTS, INITIAL_ROOT_FONT_SIZE, INLINE_CHILD_CONTAINER_TYPES, type ImageAttribution, type ImageNodeProps, ImageShape, type IndexedResource, IngestApplicationError, type IngestApplyContext, type IngestApplyStage, type IngestDiagnostic, type IngestDiagnosticCode, type IngestDiagnosticSeverity, type IngestDocumentFieldCandidates, type IngestExternalEffectValue, type IngestExternalFontDescriptorsValue, type IngestExternalFontSourceValue, type IngestFeature, type IngestFeatureCapability, type IngestFeatureCapabilityGates, type IngestFeatureIntentMatrix, type IngestFeatureStatus, type IngestFieldPolicy, type IngestFieldPolicyAction, type IngestFieldPolicyGates, type IngestFieldPolicyMatrix, type IngestNodeDecoration, type IngestNodeDecorations, type IngestPlan, type IngestPlanApplyAdapter, type IngestPlanValue, type IngestReferenceEdgeValue, type IngestResult, type IngestRootFrameValue, type IngestShapeCandidateValue, type IngestSource, type IngestSourceDescriptor, type IngestSourceElementDescriptor, type IngressIntent, type InkBlotFilter, type InlineContainerTransformResult, type InnerGlowFilter, type InnerShadowFilter, type InterpolationCharOffset, type InterpolationColor, type InterpolationGradient, type InterpolationGradientStop, type InterpolationPoint, type InterpolationSplinePoint, type InvertFilter, type JsonObject, type JsonPrimitive, type JsonValue, KNOWN_METADATA_PREFIXES, KNOWN_STATE_KEYS, type KeyedSerializedAnimationKeyframe, LAYER_PRESENTATION_IDS, LIBRARY_ASSEMBLY_KIND_ORDER, LIBRARY_EMIT_ORDER, LIBRARY_KINDS, type LibraryDef, type LibraryDefBase, type LibraryDefOfKind, type LibraryDefinitionIndex, type LibraryIndex, type LibraryKind, type LibrarySource, type LicenseType, type LightSource, Lightning, type LightningNodeProps, Line, type LineEndpointValue, type LineNodeProps, type LineShapeGeometry, type LinearEasingPoint, type LinearGradient, LinearGradientBuilder, type LinearGradientGeometry, type LinearGradientLibraryDef, type LinearGradientLibraryValue, type LiveInterpolationPolicy, type LoweredPathNodeTracks, MARKER_HEIGHT, MARKER_VIEWBOX, MARKER_WIDTH, MATHML_EXTENSION_URI, MAX_COORDINATE_PRECISION, MIGRATIONS, type MarkerDescriptor, type MarkerLibraryDef, type MarkerReferenceSets, type MaterializedIngestNode, type MatrixDecomposition2D, type Measurement, type MeasurementDeltaOperation, type MediaNodeProps, type MetadataDeltaOperation, type MetadataDescriptiveElement, type MigratableVersion, type Migration, type MorphologyFilter, type MorphologyOperator, type MotionBlurFilter, NAMESPACE_VOCABULARIES, NGon, type NGonNodeProps, NON_RENDERING_LIBRARY_KINDS, NON_WIRE_PROP_KEYS, NUMERIC_SHAPE_TRANSFORM_STATE_KEYS, type NamedResource, type NamespaceVocabulary, NestedSvg, type NodeChangeListener, type NodeFactoryMode, NodeSchemaRegistry, type NodeTypePropsMap, type NodeTypeSchema, type NoiseFilter, type OpMetadataPatch, type OpShapeState, type OpacityFilter, type Operation, type OperationValidationIssue, type OperationValidationResult, type OutlineFilter, type OutlinePosition, PAINT_SERVER_PASSTHROUGH_ATTR, PATH_DATA_TRACK_PROPERTIES, POLYGON_GEOMETRY_DEFAULTS, PRESENTATION_SEMANTICS, PUZZLE_DEFAULTS, type ParallelogramNodeProps, type ParseOptions, type ParsedCssAnimation, type ParsedPreserveAspectRatio, type ParsedSvgPathCommand, type ParsedSvgPathCommandType, type ParsedSvgViewBox, type ParsedTimingFunction, Path, type PathBoundsRect, PathCurveType, type PathNodeChannel, type PathNodeGeometry, type PathNodeProps, type PathPoint, PathPointType, type PathShapeGeometry, PatternBuilder, type PatternDefinitionEnvelope, type PatternElement, type PatternFill, type PatternLibraryDef, type PatternParams, type PatternSvgContentResult, type PatternType, type PixelateFilter, type PlanSnapshotExternalEffectsOptions, type PlanSvgAnimationsOptions, type PlanSvgClipMasksOptions, type PlanSvgConditionalProcessingOptions, type PlanSvgContainerHierarchyOptions, type PlanSvgExternalEffectsOptions, type PlanSvgFiltersOptions, type PlanSvgGradientsOptions, type PlanSvgImportOptions, type PlanSvgLeafGeometryOptions, type PlanSvgMarkersOptions, type PlanSvgMetadataOptions, type PlanSvgOccurrenceViewportsOptions, type PlanSvgPaintServerDefinitionsOptions, type PlanSvgPatternsOptions, type PlanSvgResourceDependenciesOptions, type PlanSvgScriptsOptions, type PlanSvgStyleCascadeOptions, type PlanSvgSymbolUsesOptions, type PlanSvgUseOccurrencesOptions, type Point, type PointLightFilter, type PolygonBaseNodeProps, Polyline, type PolylineNodeProps, type PolylineShapeGeometry, type PositioningRectShapeGeometry, type PresentationSemanticContext, type PresentationSemanticEntry, type PresentationSemanticId, type PresentationValueReader, type PresentationWrite, type PreserveAspectRatioAlign, type PreviousPlacement, type PrimitiveChainFilterEnvelope, type ProjectedTextLinePosition, type PropDef, type PropStamp, type PuzzleBounds, type PuzzleOptions, type PuzzlePiece, type PuzzleStyle, type PuzzleTabPattern, RDF_NS, RENDER_DIAGNOSTIC_CODES, RENDER_FEATURES, RENDER_FEATURE_CAPABILITIES, RENDER_TARGETS, RICH_TEXT_STYLE_KEYS, type RadialGradient, RadialGradientBuilder, type RadialGradientGeometry, type RadialGradientLibraryDef, type RadialGradientLibraryValue, type RasterImage, type RasterQualityReport, type RawFilterEnvelope, type RawSvgFilter, type Rect, Rectangle, type RectangleNodeProps, type RectangleShapeGeometry, type RejectedWordSearchWord, type RenderAnimationElementsOptions, type RenderCapability, type RenderCapabilityMatrix, type RenderCapabilityMatrixGates, type RenderDiagnostic, type RenderDiagnosticCode, type RenderDiagnosticSeverity, type RenderFeature, type RenderFeatureCapability, type RenderFeatureCapabilityGates, type RenderFeatureTargetMatrix, type RenderFinalizationOptions, type RenderFrameAttributeOmissions, type RenderOptions, type RenderPlan, type RenderPlanBodyEntry, type RenderPlanDefEntry, type RenderPlanDefKind, type RenderPlanDefinitionContainer, type RenderPlanDefs, type RenderPlanEnvelope, type RenderPlanFrame, type RenderPlanOptions, type RenderPlanShape, type RenderShapeContext, type RenderTarget, type RenderToSvgResult, type RenderedDefinitionAnimationElement, type RenderedRootOverrides, type ResolveSvgClipMaskContext, type ResolveSvgGradientGeometryContext, type ResolveSvgPatternTileContext, type ResolvedConnectorAnchor, type ResolvedConnectorEndpoints, type ResolvedContainerTransform, type ResolvedLibraryGradient, type ResolvedSvgPatternTile, type ResolvedSvgRectRadii, type ResolvedSvgViewport, type ResolvedSvgViewportFrame, type ResolvedSymbolDefinitionRender, type ResolvedSymbolInstanceContent, type ResolvedSymbolViewport, type ResolvedTextFragment, type ResolvedTextSpan, type ResolvedTextSpanChild, type ResolvedTextSpanProjection, type ResourceKey, type Rgba, type RichTextAlignmentBaseline, type RichTextDecoration, type RichTextFontWeight, type RichTextFormatRange, type RichTextLineSpan, type RichTextResolvedData, type RichTextResolvedLine, type RichTextResolvedSegment, type RichTextResolvedStyle, type RichTextRun, type RichTextRuns, type RichTextSegmentsInput, type RichTextStyleDelta, type RichTextTspanAttribute, type RiddledFilter, Ring, type RingNodeProps, type RootViewportFraming, type RoundEdgesFilter, SAXES_SVG_XML_PARSER_HOST, SCRIPT_ANIMATION_GENERATORS, SERIALIZED_SHAPE_STATE_KEYS, SHAPE_ENVELOPE_KEYS, SHAPE_GEOMETRY_DEFAULTS, SHAPE_TRANSFORM_STATE_KEYS, SVGSKETCH_NS, SVGSKETCH_PATH_EXTENSIONS, SVG_CONDITIONAL_PROCESSING_ATTRIBUTES, SVG_IMPORT_CAPABILITY_OWNERS, SVG_NAMESPACE, SVG_NS, SVG_PRESENTATION_PROPERTIES, SVG_WELL_KNOWN_NAMESPACE_URIS, type SaturateFilter, SceneGraph, SceneNode, type SceneTreeReplayHost, type ScriptAnimationCandidateScript, type ScriptAnimationGenerator, type ScriptAnimationSource, type SegmentCurveType, type SepiaFilter, type SerializedAnimationKeyframe, type SerializedAnimationTimeline, type SerializedAnimationTrack, type SerializedCharOffset, type SerializedClipMaskGroup, type SerializedColorGlyph, type SerializedColorGlyphLibrary, type SerializedExportItem, type SerializedGroup, type SerializedMarkerDef, type SerializedPaintServerDef, type SerializedSceneNodePlacement, type SerializedShape, type SerializedShapeState, type SerializedShapeStateKeyGates, type SerializedShapeTransformState, type SerializedSymbolDef, type SerializedVariantAxis, type SerializedViewbox, type SeverityOptions, type SeverityReport, ShapeBuilder, type ShapeEnvelopeKeyGates, type ShapeFilter, type ShapeGeometryDefaultsType, type ShapeGeometryDescriptor, type ShapeGeometryKernel, type ShapeGeometryRendererKey, type ShapeLibraryDefBase, type ShapeLocalObjectBoundsHost, type ShapeMetadata, type ShapeObjectBoundsHost, type ShapeOutlineCapability, ShapeReference, type ShapeReferenceGeometry, type ShapeReferenceNodeProps, type ShapeReferenceTransformResult, type ShapeTransformState, type ShapeTreeVisitor, type SharpenFilter, type SmilAnimationKeyframe, type SmilCalcMode, type SmilKeyframeAttributes, type SmilKeyframeData, type SmilTimingRelation, type SmilTimingTrack, type SmilValue, type SmilValueAttributes, type SmilValueType, type SmilViewBoxAxis, type SmilViewBoxQuartet, type SolveSudokuOptions, type SpecularLightingFilter, SpeechBubble, type SpeechBubbleNodeProps, Spiral, type SpiralNodeProps, type SpliceTextSpanTreeResult, type SplinePointInput, type SpotLightFilter, Square, type SquareNodeProps, Star, type StarNodeProps, type StepPosition, type StepsParams, type StringifyOptions, type StrokeType, type StructureChangeListener, type StyledTextContent, type StyledTextLine, type StyledTextSegment, type StyledTextSource, type SudokuDifficulty, type SudokuGrid, type SudokuRating, type SudokuValidationResult, type SvgAnimationPlan, type SvgAnimationTargetStatus, type SvgAnimationTimelineDefinitionTarget, type SvgAnimationTimelineProjectionHost, type SvgAnimationTimelineShapeBinding, type SvgAppliedResourceDeclaration, type SvgAuthoredAttributeClassification, type SvgAuthoredAttributePlan, type SvgAuthoredAttributeRecord, type SvgAuthoredDeclaration, type SvgClipMaskBinding, type SvgClipMaskBindingStatus, type SvgClipMaskDefinition, type SvgClipMaskDefinitionMutation, type SvgClipMaskGeometryPlacement, type SvgClipMaskObjectBounds, type SvgClipMaskPlan, type SvgClipMaskRegion, type SvgClipMaskRepresentation, type SvgClipMaskResolution, type SvgClipMaskStatus, type SvgClipMaskType, type SvgClipMaskUnits, type SvgConditionalProcessingCandidate, type SvgConditionalProcessingCondition, type SvgConditionalProcessingPlan, type SvgContainerHierarchy, type SvgContainerHierarchyNode, type SvgContainerHierarchyPlacement, type SvgContainerKind, type SvgCssAnimationCandidate, type SvgCssKeyframeDeclaration, type SvgCssKeyframeStopPlan, type SvgCssKeyframesPlan, type SvgCssSpecificity, type SvgDescriptiveElement, type SvgDestinationIdAllocator, type SvgDestinationIdAssignment, type SvgDestinationIdRequest, type SvgDestinationIdentityChannel, type SvgDestinationIdentityIndex, type SvgDestinationIdentityOwner, type SvgDocumentMetadataCandidate, type SvgElementMetadataCandidate, type SvgElementStylePlan, type SvgEmbeddedFrameCandidate, type SvgEmbeddedFrameState, type SvgExternalAssetCandidate, type SvgExternalAssetStatus, type SvgExternalEffectsPlan, type SvgExternalFontCandidate, type SvgFilterBinding, type SvgFilterBindingStatus, type SvgFilterCandidate, type SvgFilterCandidateStatus, type SvgFilterOperation, type SvgFilterOperationStatus, type SvgFilterPlan, type SvgFilterRegion, type SvgFramingRect, type SvgGradientCandidate, type SvgGradientFallback, type SvgGradientGeometryValue, type SvgGradientPaintBinding, type SvgGradientPlan, type SvgGradientStatus, type SvgGradientStopCandidate, type SvgGradientTransform, type SvgHtmlMetadataElement, type SvgImportCapabilityAuthority, type SvgImportCapabilityOwner, type SvgImportCapabilityOwnershipGates, SvgImportError, type SvgImportPlan, type SvgImportProjectionContext, type SvgIngestDiagnosticContext, type SvgLeafCanonicalType, type SvgLeafGeometryCandidate, type SvgLeafGeometryPlan, type SvgLeafGeometryStatus, type SvgLengthContext, type SvgLengthToken, type SvgLocalReferenceChannel, type SvgMarkerAnimationCandidate, type SvgMarkerAuthoredGeometry, type SvgMarkerCandidate, type SvgMarkerContentCandidate, type SvgMarkerPlan, type SvgMarkerStatus, type SvgMetadataPlan, type SvgNodeProps, type SvgOccurrenceViewportContext, type SvgOccurrenceViewportPlan, type SvgPaintServerDefinitionCandidate, type SvgPaintServerDefinitionPlan, type SvgParsedStyleAttribute, type SvgPathAffineMatrix, type SvgPathCommandType, type SvgPathExtensionCommandType, type SvgPathMetricPoint, type SvgPathMetrics, type SvgPathMetricsOptions, type SvgPathParseError, type SvgPathParseErrorCode, type SvgPathParseOptions, type SvgPathParseResult, type SvgPathParserExtensions, type SvgPatternCandidate, type SvgPatternContentOccurrence, type SvgPatternFallback, type SvgPatternPaintBinding, type SvgPatternPlan, type SvgPatternResourceCandidate, type SvgPatternStatus, type SvgPatternTransform, type SvgPatternValue, type SvgPlannedScript, type SvgPresentationAttributeApplicability, type SvgPrimitiveChainFilter, type SvgPropertySemantics, type SvgResourceDependencyClosure, type SvgResourceDependencyComponent, type SvgResourceDependencyEdge, type SvgResourceDependencyKind, type SvgResourceDependencyMaterialization, type SvgResourceDependencyPlan, type SvgResourceElementKind, type SvgResourceProperty, type SvgScriptCandidate, type SvgScriptPlan, type SvgScriptScope, type SvgSmilAnimationCandidate, type SvgSmilAnimationKind, type SvgSourceAttribute, type SvgSourceCharacterNode, SvgSourceDecodingError, type SvgSourceDocument, type SvgSourceElement, type SvgSourceElementIdPlan, type SvgSourceGeneratedIdPlan, type SvgSourceHref, type SvgSourceIdOccurrence, type SvgSourceIdentifierPlan, type SvgSourceIdentifierPlanOptions, type SvgSourceIndex, type SvgSourceLocalReference, type SvgSourceNode, type SvgSourceReferenceRewrite, type SvgSourceResourceIdPlan, type SvgSourceResourceKind, type SvgStyleCascadePlan, type SvgStyleDeclarationOrigin, type SvgStyleEnvironment, type SvgStyleRulePlan, type SvgStylesheetPlan, type SvgSymbolDefinitionCandidate, type SvgSymbolDefinitionKind, type SvgSymbolUseCandidate, type SvgSymbolUseGeometry, type SvgSymbolUsePlan, type SvgSymbolUseStatus, type SvgSymbolUseTransform, type SvgTextMetricsHost, type SvgTextSpanNodeCandidate, type SvgTextSpanTarget, type SvgTextSpanTreeCandidate, type SvgUnboundStylesheetResourceReference, type SvgUseDefinitionComponent, type SvgUseOccurrence, type SvgUseOccurrenceEdge, type SvgUseOccurrencePlan, type SvgUseOccurrenceRole, type SvgUseResolution, type SvgUseResolutionStatus, type SvgUseResourceCapability, type SvgUseResourcePolicy, type SvgUseResourceRoot, type SvgUseSourceResolution, type SvgUseSourceResolutionStatus, type SvgViewCandidate, type SvgViewState, type SvgViewportDiagnostic, type SvgViewportDimensions, type SvgViewportFrame, type SvgViewportSize, type SvgViewportStatus, type SvgXmlAttributeInput, type SvgXmlCharacterNodeInput, type SvgXmlElementInput, type SvgXmlNodeInput, type SvgXmlParserHost, SvgXmlParserHostError, type SvgXmlParserHostResult, type SvgXmlSourceSpan, type SvgatorPayload, type SvgatorProjectionHost, type SvgatorProjectionResult, Switch, type SwitchNodeProps, type SymbolInstanceGeometry, type SymbolInstanceMaterialization, type SymbolInstanceNodeProps, type SymbolInstanceTransformResult, type SymbolLengthContext, type SymbolLibraryDef, type SymbolMaterialization, type SymbolMaterializationDiagnostic, type SymbolMaterializationDiagnosticCode, type SymbolMaterializationPlan, type SymbolMaterializationPlanOptions, type SymbolResolutionDiagnostic, type SymbolResolutionDiagnosticCode, type SymbolViewportDiagnostic, type SymbolViewportDiagnosticCode, type SymbolViewportHost, TEXT_PATH_GENERATED_ID_PREFIX, TYPED_FIELD_PREDICATES, type TemplateVariable, type TemplateVariableMode, type TemplateVariableOperation, type TemplateVariableSource, type TemplateVariableType, type TerminatorNodeProps, Text, type TextFormatOperation, type TextLayoutCaret, type TextLayoutCaretDraft, TextLayoutEngine, type TextLayoutGlyph, type TextLayoutGlyphDraft, type TextLayoutLine, type TextLayoutMeasurementRequest, type TextLayoutPoint, type TextLayoutProduct, type TextLayoutProductDraft, type TextLayoutProductHost, type TextLayoutRect, type TextLayoutRequest, type TextLayoutResult, type TextLayoutSegment, type TextLayoutViewport, type TextLayoutVisualLine, type TextLinePosition, type TextMeasurementHost, type TextNodeProps, type TextObjectBoundsMeasurement, type TextPathReference, type TextShapeGeometry, type TextShapeInsideGeometry, type TextShapeSpan, type TextSpanAnimationTarget, type TextSpanNode, type TextSpanRotationProjection, type TextSpanTree, type TextSplice, Timeline, Track, type TransferFunc, type TransformFusionPlan, type TransformStateLike, type TrapezoidNodeProps, Triangle, type TriangleNodeProps, VARIANT_INTERPOLATION_POLICY, type ValidationError, type ValidationResult, type VariableMap, type VariantAnimationElementSpec, type VariantCssPlan, type VariantCssSymbolPlan, type VariantSmilInnerAction, type VariantSmilOp, type VariantSmilSymbolPlan, type VariantTransitionDefinitionContent, type VariantTransitionInput, type VariantTransitionInstanceView, type VariantTransitionPlanOptions, type VariantTransitionRenderPlan, type VariantTransitionTarget, type VariantTransitionTimelineLike, type VariantWaapiPlan, type VariantWaapiSymbolPlan, Video, View, type ViewBoxFusionPlan, type ViewNodeProps, type ViewShapeGeometry, type Viewbox, type VocabularyAttribute, type VocabularyAttributeSource, type VocabularyAttributes, type VocabularyClaim, type VocabularyProjection, WRAPPER_PRESENTATION_IDS, type WarpFilter, type WarpType, type WatercolorFilter, type WireAliasShapeStateFields, type WireOnlyShapeStateFields, type WordSearchAxes, type WordSearchCellPath, type WordSearchDirection, type WordSearchLintResult, type WordSearchOptions, type WordSearchPlacement, type WordSearchPrimitiveMask, XHTML_EXTENSION_URI, type XrayFilter, accumulateAnimationValue, addAnimationValues, addSmilPointsValues, affine, affineFromArray, affineToArray, almostEqualAffine, animationBackwardsFillTrack, animationCycleDuration, animationDefinitionTargetShapeId, animationTrackActiveEnd, animationTrackDocumentBegin, appearanceLayers, appendAppearanceLayer, applyAffineToPoint, applyAffineToVector, applyAppearanceStyle, applyClipMaskGroupDelta, applyClipMaskPlanToShapes, applyCssAnimationLonghandOverrides, applyGuideDeltaOp, applyIngestPlan, applyMeasurementDeltaOp, applyMetadataDeltaOp, applyOpToSnapshot, applyOpsInPlace, applyOpsToSnapshot, applyOpsToSnapshotWithAccepted, applyPathNodeValue, applyRichTextFormat, applyTextSplice, applyTextTransform, applyTimingFunctionToKeyframe, arcEndpointToCenter, areTracksTimingEquivalent, around, assembleLibraryDefs, assembleSvgFromPlan, assertIngestFeatureRegistry, assertIngestPolicyRegistry, assertNamespaceVocabularyRegistry, assertRasterImage, assertSvgImportCapabilityOwners, authoredPaintDeclarations, baseFillLayer, baseStrokeLayer, buildCompoundTransformValues, buildDefinitionPlacementIndex, buildForeignImportReport, buildFreshMetadataBlock, buildGuideDeltaOps, buildManagedChildren, buildManagedDescription, buildMeasurementDeltaOps, buildMetadataDeltaOps, buildRenderPlan, buildSmilKeyframeData, buildSmilKeyframes, buildSvgDestinationIdentityIndex, buildSvgIngestPlan, buildSymbolMaterializationPlan, buildViewBoxSmilKeyframeData, canonicalPolygonTransformString, canonicalTransformMatrix, canonicalTransformString, chainHasTargetedEffects, claimElementThroughVocabulary, classifyIngestDiagnostic, classifySvgExternalAssetUrl, clipMaskDefinitionFromGroup, clipMaskDefinitionsFromGroups, clipMaskGroupDefId, clipMaskGroupDefinitionId, clipMaskGroupIsRawBacked, clipMaskGroupWithDefinition, clipMaskOwnedDefIds, cloneTextSpanTree, collaborationResourceKey, collectDocumentEnvelopeLibraryReferenceIds, collectFontFacesFromPlan, collectFontFamiliesFromPlan, collectMarkerReferences, collectReferencedLibraryDefs, collectReferencedMarkerIds, collectSvgFragmentLibraryReferenceIds, collectUnknownDocumentFields, compareImages, compareOrderKeys, composeDecomposedTransformMatrix, compositeOver, computeArrowVertices, computeCatmullRomSegments, computeCloudPath, computeCrossVertices, computeDashArray, computeFlowchartBoxPath, computeGearPath, computeGearVertices, computeHeartPath, computeLightningVertices, computePolygonVertices, computeRectanglePath, computeRingPath, computeSpeechBubbleVertices, computeSpiralPath, computeSplinePath, computeStarVertices, connectorLabelAnchor, containerTransformNeedsContentPivot, convertGradientUnits, createDocument, createSceneNode, createShape, createSvgDestinationIdAllocator, createSvgPathMetrics, createTextLayoutKey, createTextLayoutProduct, createViewbox, createWordSearchPrimitiveMask, cssAnimationFillField, cssNamedColorToRgb, cubicBezierExtent1D, cubicBezierToEasingFields, customPatternDefToLibraryDef, declaredRichTextDeltaKeys, decodeCssEscapes, decodeSvgSourceBytes, decomposeAffine2D, decoratePlanNodes, decorateSnapshotShapes, dedupeFontFaces, defaultVariableMode, deltaE2000, deriveRichTextFormatRanges, deriveSegments, deriveTextSplice, derivedConnectionPoints, detachAppearanceStyle, documentObjectBounds, ellipticalArcBounds, emptyDocumentMetadata, ensureTextSpanRange, escXml, evaluateEasing, evaluateFontCoverage, evaluateKeyframeEasing, evaluateLinearEasing, evaluateParsedTimingFunction, evaluateSteps, evaluateSvgConditionalProcessing, expandAppearanceStack, extractVariables, filterAttr, filterChainExtendsBounds, filterChainGroupId, filterChainGroups, filterDefinitionEnvelope, filterReferenceValue, finalizeRenderPlan, findShapeById, fingerprintCssAnimationDocumentStyles, fingerprintCssAnimationInlineStyles, fingerprintCssAnimationTrack, fingerprintIngestSource, flattenShapeStateTree, flattenStateExtra, flattenUnknownDocumentFields, foldSchemaV2AncestorTransformIntoMatrix, fontFaceKey, forEachAppearanceLayerRef, forEachAppearanceStyleRef, forEachLibraryRefInState, forEachMarkerRefInState, forEachReachableShape, forEachShapeInLibraryDefs, formatCssFontFamilyList, formatOperationValidationIssues, formatSmilKeySpline, formatSmilKeyTime, freezeIngestPlan, freezeSiblingOrderKeys, generateCode, generateCodeWithDiagnostics, generateCssCode, generateD3Code, generateId, generatePatternSvgContent, generatePuzzlePieces, generateReactCode, generateSudokuPuzzle, generateSvgCode, generateVueCode, generateWordSearch, geometryDefinitionId, geometryState, getBuiltInMarkerDefs, getEasingCubicBezier, getEffectivePrecision, getIngestFeatureCapability, getIngestFieldPolicy, getKeyframeCubicBezier, getLicenseLabel, getLicenseUrl, getMarkerDescriptors, getPatternElements, getShapeGeometryKernel, getSmilAccumulate, getSmilAdditive, getSmilBeginValue, getSmilFillMode, getSmilMotionKeyPoints, getSmilRepeatCount, getSmilSetBeginValue, getSmilTrackDuration, getSvgCoordinateAttributePrecision, getSvgPropertySemantics, getSvgSourceAttribute, getSvgSourceHref, getWordSearchDirections, gradientStopPoint, gradientTransformAttribute, hasAnyTypedMetadataField, hasEmittableSmilSimpleDuration, hasOpaqueSvgAncestor, hasSvgSourceAttribute, importSvg, importSvgWithDiagnostics, indexLibraryDefinitions, inferSvgCoordinatePrecision, initialOrderKeys, injectClipMaskReference, inspectCssTransformValue, interpolateAngle, interpolateCharOffsetArray, interpolateColor, interpolateDasharrayLists, interpolateGradient, interpolateNumericArray, interpolatePathData, interpolatePlainObject, interpolatePointArray, interpolatePolylinePoints, interpolateShapeTrees, interpolateSplinePointArray, invertAffine, isColorValue, isConnectorLineState, isCssAnimationDeclarationName, isCssGenericFamilyName, isCssNamedColor, isDefaultKeyPoints, isDefaultKeyTimes, isDocumentImportIntent, isEntirelyUnembeddableFamilyList, isFiniteAffineArray, isGeometryTrackProperty, isGradientLike, isIdentityAffine, isIdentityLinearSplines, isIndefiniteSetTrack, isIndefiniteSmilSimpleDuration, isNumericArray, isPathDataTrackProperty, isPathNodeTrack, isReusablePatternTile, isSafeGradientRootAttributeName, isSafePatternRootAttributeName, isSetSequenceTrack, isSvgPresentationProperty, isTextPathGeneratedId, isUnembeddableFamilyName, isValidOrderKey, keyBetween, keysBetween, layerFilterTargets, layerPaints, layerState, layoutText, legacyEndpointMarkerId, lerpNumber, linearGradient, linearGradientEnvelope, lintWordSearchOptions, lowerPathNodeTracks, luma709, mapAnimationTrackTime, matchCubicBezierToPreset, materializeSceneTreeOrderKeys, matrixTransformPart, maxCollaborationTimestamp, mergeRichTextStyle, migrateSnapshot, migrateV11toV12, migrateV14toV15, migrateV15toV16, migrateV16toV17, migrateV17toV18, migrateV18toV19, migrateV6toV7, migrateViewboxSidecarToViews, motionPathD, moveResourceById, multiplyAffine, mutateSvgClipMaskDefinitionMarkup, namespaceVocabularies, namespaceVocabulary, needsAppearanceStack, nodeSchemas, normalizeClipMaskGroups, normalizePaintServerDef, normalizeRichTextRuns, normalizeRichTextStyle, normalizeRichTextStyleDelta, normalizeSmilPointsValue, normalizeSnapshotStructure, normalizeSnapshotToCanonicalDocument, orderSiblings, paintingLayers, parseColor, parseCssAnimationShorthand, parseCssTimingFunction, parseCssTransformOrigin, parseDocument, parseDocumentWithDiagnostics, parseFontFamilyList, parseInterpolationNumbers, parsePathNodeProperty, parsePreserveAspectRatio, parseSmilAdditive, parseSmilClockValue, parseSmilDuration, parseSmilFillField, parseSmilKeySplines, parseSmilKeyTimes, parseSmilRepeatSettings, parseSmilValues, parseSvgAbsoluteLength, parseSvgLength, parseSvgLengthList, parseSvgLengthToken, parseSvgPathData, parseSvgRootFrame, parseSvgSourceDocument, parseSvgStyleAttribute, parseSvgTransformList, parseSvgViewBox, parseSvgatorPayload, parseVariableArgs, parseWordSearchWords, partitionShapeStateTree, partitionStateExtra, partitionUnknownDocumentFields, pathCommandStructuresMatch, pathDataBounds, pathNodeTracksAreSuperseded, pattern, patternDefinitionEnvelope, patternLibraryDefToCustomPatternDef, patternTileSize, pickCssAnimationListItem, plainTextOf, plainTextStyle, planClipMaskGroups, planSnapshotExternalEffects, planSvgAnimations, planSvgAuthoredAttributes, planSvgClipMasks, planSvgConditionalProcessing, planSvgContainerHierarchy, planSvgDocumentExtensions, planSvgEmbeddedFrames, planSvgExternalEffects, planSvgFilters, planSvgGradients, planSvgImport, planSvgLeafGeometry, planSvgMarkers, planSvgMetadata, planSvgOccurrenceViewports, planSvgPaintServerDefinitions, planSvgPatterns, planSvgResourceDependencies, planSvgScripts, planSvgSourceIdentifiers, planSvgStyleCascade, planSvgSymbolUses, planSvgUseOccurrences, planSvgViews, planTransformFusion, planVariantTransitions, planVariantTransitionsCss, planVariantTransitionsSmil, planVariantTransitionsWaapi, planViewBoxFusion, preferredSubsetsForText, premultiply, prepareSvgAuthorCssForLiveProjection, prepareSvgExternalAssetUrlForLiveProjection, prepareSvgMarkupForLiveProjection, prepareSvgXmlSource, preserveAspectRatioAlignFactor, projectClipMaskDefinitionAnimations, projectCssTransformStops, projectDefinitionAnimations, projectPresentation, projectPresentationEntry, projectSceneTreeOntoClipMaskGroups, projectSceneTreeOntoShapes, projectSvgAnimationPlan, projectSvgAnimationTimeline, projectSvgImportToIngestPlan, projectSvgImportToSnapshot, projectSvgSourceNodes, projectSvgatorAnimation, projectTextLinePosition, projectTextSpanRotations, promoteManagedDescription, promoteRebasedShapeUpdateClock, pruneAndWrapSubtree, quadraticBezierExtent1D, radialGradient, radialGradientEnvelope, rebaseRichTextFormatRanges, rebaseRichTextRuns, recognizeScriptAnimation, reflectCubicBezier, registerNamespaceVocabulary, registeredExtensionUris, registeredShapeGeometryTypes, removeResourceById, removeResourceByKey, removeResourceByName, removeTrackKeyframe, renderAnimationElements, renderBuiltinMarkerDefs, renderCircle, renderClipMaskDefinitionAnimationElements, renderClipMaskDefinitionShape, renderDefinitionAnimationElements, renderDescriptiveElements, renderDocumentAnimationElements, renderDocumentExtensionAttributes, renderDocumentExtensionNodes, renderDocumentExtensions, renderDocumentScripts, renderDocumentStyles, renderEllipse, renderFilterDefs, renderFilterElement, renderFilterLibraryDef, renderFilterPrimitive, renderFilterPrimitivesForType, renderFlowchartBox, renderForeignObject, renderGradientDefs, renderGradientStopAnimationElement, renderImage, renderLibraryDef, renderLibraryDefs, renderLine, renderLinearGradient, renderLinearGradientLibraryDef, renderMarkerLibraryDef, renderPaintServerDefs, renderPatternLibraryDef, renderPlanDefsBody, renderPolygonShape, renderPolyline, renderRadialGradient, renderRadialGradientLibraryDef, renderRectangle, renderReferencedLibraryDefs, renderResolvedSymbolDefinitionForest, renderResolvedSymbolDefinitionSubtree, renderResolvedSymbolLibraryDef, renderShape, renderShapeContextForLibrary, renderSpline, renderSvgPrimitiveChainFilter, renderSymbolInstance, renderSymbolLibraryDef, renderTemplateVariablesStyle, renderText, renderTextSpanAnimationElements, renderToSvg, renderToSvgWithDiagnostics, renderVariantTransitionScript, renderVariantTransitionStylesheet, replaceClipMaskDefinition, replaceClipMaskGroupsInSceneTree, replaySceneTreePlacements, requiredDecimalPrecision, requiredSubsetsForText, resolveAppearanceStyle, resolveConnectorAnchorFromDocument, resolveConnectorEndpoints, resolveContainerTransform, resolveContainerTransformFromContentBounds, resolveCssAnimationEasingType, resolveEmbeddedSvgTransform, resolveEmbeddedSvgViewportFrameBounds, resolveFontStyle, resolveFontWeight, resolveGradientGeometry, resolveGradientLibraryDef, resolveInlineContainerTransform, resolveMetadataQName, resolvePasteWrapperViewportSize, resolvePathDAtTime, resolvePatternLibraryDef, resolvePatternTile, resolveRichTextStyleAt, resolveRootViewportFraming, resolveShapeGeometry, resolveShapeLocalObjectBounds, resolveShapeObjectBounds, resolveShapeReferenceTransform, resolveStyledTextLines, resolveSvgGradientGeometry, resolveSvgLengthToken, resolveSvgPatternTile, resolveSvgQName, resolveSvgRectRadii, resolveSvgTextSpanTarget, resolveSvgViewport, resolveSymbolDefinitionForestRootIds, resolveSymbolInstanceContent, resolveSymbolInstanceShapes, resolveSymbolInstanceTransform, resolveSymbolViewport, resolveTextSpanProjection, rewriteDocumentEmbeddedPayloads, rewriteIdReferencesInMarkup, rewriteShapeStateEmbeddedPayloads, rewriteSvgResourceReferenceValue, richTextFontVariantCss, richTextLineSpans, richTextRunsFromState, richTextStyleDelta, richTextStyleDeltasEqual, richTextStylesEqual, richTextTspanAttributes, rootMetadataAttrs, rootPaintServerDefId, rotateAffine, roundCoord, roundMarkupCoordinates, roundNumberString, roundSerializedShape, roundSnapshot, routeConnector, runsFromSegments, sameSize, sampleAnimationTrackTime, sampleTextForSubsets, sanitizeRichTextFormatRanges, sanitizeXmlId, scaleAffine, scanCssFunctionTokens, scanCssLocalUrlTokens, senderCorrectionsForOp, serializeSvgPathData, serializedPathNodeGeometry, serializedPresentationReader, severity, shapeAppearanceLayers, shapeAppearanceStyle, shapeLocalObjectBounds, shapeLocalObjectCenter, shapeNeedsAppearanceExpansion, shapeObjectBoundsInSpace, shapeOutlineCapability, shouldRoundSvgCoordinateAttribute, skewXAffine, skewYAffine, smilKeyframeAttributes, snapshotBoundsView, sniffDocumentBytes, solveCubicBezier, solveSudoku, spliceTextSpanTree, splinePathBounds, splitAppearanceForStyle, splitCssAnimationList, splitCssTopLevel, splitCssTopLevelRanges, splitTopLevelElements, srgbToLab, ssimPlane, stringifyDocument, stripAnimationDeclarations, stripCssAnimationInlineStyle, subsetsForCodePoint, substituteString, substituteVariables, symbolDefinitionSemanticHash, symbolInstanceTargetId, synthesizeCssAnimationShorthand, templateVariablesCss, textPathGeneratedId, textSpanEffectiveRotations, textSpanIds, textSpanNodeById, textSpanRangeByIds, transformSplice, transformSvgPathData, translateAffine, translateSvgPathData, tryParseSvgTransformList, unmatchedDecorationDiagnostics, updateGradientLibraryDef, upsertResourceById, upsertResourceByKey, upsertResourceByName, upsertTrackKeyframe, validateDocumentOperations, validateOperation, validatePresenceOperation, validateSnapshot, validateSudokuPuzzle, verticesToPath, visitShapeTree, visitSnapshotShapeTrees, writeAppearanceLayers };