@svgsketch/core 6.1.0 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts 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;
@@ -10961,6 +10973,15 @@ declare function patternTileSize(pattern: Omit<PatternFill, 'id' | 'sourceId' |
10961
10973
  * `isReusablePatternTile`).
10962
10974
  */
10963
10975
  declare function patternLibraryDefToCustomPatternDef(def: PatternLibraryDef): CustomPatternDef | null;
10976
+ /**
10977
+ * The reusable tile a pattern def paints with, as the flat view the editor's
10978
+ * pattern pickers speak.
10979
+ *
10980
+ * Resolves both halves of the question a picker asks: which def owns the tile
10981
+ * (see `patternTileOwner`) and how big that tile is once the chain's geometry
10982
+ * is merged, so an alias and the pattern it inherits from answer identically.
10983
+ */
10984
+ declare function resolvePatternTile(definitionOrId: PatternLibraryDef | string, library: readonly LibraryDef[]): CustomPatternDef | null;
10964
10985
 
10965
10986
  /**
10966
10987
  * What kind of string a payload slot holds.
@@ -12355,8 +12376,18 @@ type RenderDiagnosticSeverity = 'warning' | 'error';
12355
12376
  * - `inert-text-path-morph`: a text shape carries a `textPathMorph` track
12356
12377
  * but does not own the geometry its `<textPath>` follows (it links another
12357
12378
  * 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"];
12379
+ * - `inert-variant-transition-content`: an `instanceVariant` segment adds or
12380
+ * crossfades an inner shape, but the definition is a native-shape def whose
12381
+ * single root element cannot host siblings (SVG 2 §5.5), so that content
12382
+ * was not emitted. Property animations on the root still are.
12383
+ * - `unresolved-variant-transition-pivot`: a variant segment rotates an inner
12384
+ * shape whose center is not analytic (text, containers) and no measurement
12385
+ * host was supplied, so the pivot-following rotation was not emitted.
12386
+ * - `shared-variant-transition-gradient`: a variant segment animates a
12387
+ * gradient definition that more than one shape references, so the animation
12388
+ * is visible on every referent rather than only the transitioning instance.
12389
+ */
12390
+ 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
12391
  type RenderDiagnosticCode = (typeof RENDER_DIAGNOSTIC_CODES)[number];
12361
12392
  /** One machine-readable problem reported while producing render output. */
12362
12393
  interface RenderDiagnostic {
@@ -12370,833 +12401,274 @@ interface RenderDiagnostic {
12370
12401
  }
12371
12402
 
12372
12403
  /**
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.
12404
+ * Shared transform ownership for serialized container shapes.
12402
12405
  *
12403
- * @packageDocumentation
12406
+ * Imported groups preserve their source transform in `groupData.transform`.
12407
+ * Canonical shape transform state owns the SVG attribute whenever it produces
12408
+ * a non-identity matrix; the imported spelling is only the fallback. Rendering
12409
+ * and analytic tree bounds use this module so the two projections cannot pick
12410
+ * different owners.
12404
12411
  */
12405
12412
 
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;
12413
+ type ContainerTransformOwner = 'canonical' | 'group-data' | 'none';
12414
+ interface ResolvedContainerTransform {
12415
+ matrix: Affine2D;
12416
+ attribute: string | null;
12417
+ owner: ContainerTransformOwner;
12411
12418
  }
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[];
12419
+ interface ContainerContentBounds {
12420
+ minX: number;
12421
+ minY: number;
12422
+ maxX: number;
12423
+ maxY: number;
12420
12424
  }
12421
- /** Resolve variant selection and recursive immutable overrides once for every surface. */
12422
- declare function resolveSymbolInstanceContent(def: SymbolLibraryDef, instance: SerializedShape): ResolvedSymbolInstanceContent;
12423
12425
  /**
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.
12426
+ * Resolve the transform emitted on a container and the equivalent affine.
12427
+ * SVG 2 section 8.5 applies the transform to the container coordinate system.
12436
12428
  */
12437
- declare function symbolInstanceTargetId(instance: SerializedShape, dedicated?: boolean): string;
12429
+ declare function resolveContainerTransform(state: SerializedShapeState, defaultPivot?: Point): ResolvedContainerTransform;
12430
+ /** Whether decomposed rotation, scale, or skew channels need a geometry pivot. */
12431
+ declare function containerTransformNeedsContentPivot(state: SerializedShapeState): boolean;
12432
+ /** Resolve container transform channels around the exact local content center. */
12433
+ declare function resolveContainerTransformFromContentBounds(state: SerializedShapeState, bounds: ContainerContentBounds | null): ResolvedContainerTransform;
12434
+
12438
12435
  /**
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.
12436
+ * Pure geometry functions for computing shape vertices and paths.
12443
12437
  *
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.
12438
+ * These are headless — no DOM required. They take numeric parameters
12439
+ * and return vertex arrays or SVG path-data strings.
12448
12440
  */
12449
- declare function resolveSymbolInstanceShapes(def: SymbolLibraryDef, instance: SerializedShape): SerializedShape[];
12450
12441
 
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
12442
  /**
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.
12443
+ * Compute equally-spaced vertices around a circle (for triangle, ngon).
12444
+ * Path is centered at origin; caller applies translate(cx, cy).
12479
12445
  */
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
- }
12446
+ declare function computePolygonVertices(sides: number, radius: number, shiftAngleDeg?: number): Point[];
12528
12447
  /**
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.
12448
+ * Compute star vertices with alternating outer/inner radii.
12533
12449
  */
12534
- declare function buildSymbolMaterializationPlan(library: readonly LibraryDef[], roots: readonly SerializedShape[], options?: SymbolMaterializationPlanOptions): SymbolMaterializationPlan;
12535
-
12450
+ declare function computeStarVertices(arms: number, radius: number, innerRadiusPercent: number, shiftAngleDeg?: number): Point[];
12536
12451
  /**
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
12452
+ * Compute cross vertices (12 points forming a plus shape).
12568
12453
  */
12569
-
12454
+ declare function computeCrossVertices(radius: number, armWidthPercent: number, shiftAngleDeg?: number): Point[];
12570
12455
  /**
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.
12456
+ * Compute arrow vertices (7 points forming an arrow).
12578
12457
  */
12579
- type LibraryIndex = ReadonlyMap<string, LibraryDef>;
12580
- /** Accept either the array form or a prebuilt index. */
12581
- type LibrarySource = readonly LibraryDef[] | LibraryIndex;
12458
+ declare function computeArrowVertices(radius: number, headWidthPercent: number, headLengthPercent: number, shaftWidthPercent: number, shiftAngleDeg?: number): Point[];
12582
12459
  /**
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.
12460
+ * Compute speech-bubble vertices — square body with a tail protruding at a
12461
+ * chosen angle. The base endpoints lie on the chosen body edge (keeping the
12462
+ * body outline continuous); the tip extends in the direction of `tailAngleDeg`
12463
+ * at length `tailLengthPercent * radius`.
12596
12464
  *
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.
12465
+ * The `shiftAngleDeg` rotates the entire shape (body + tail).
12601
12466
  */
12602
- declare function forEachReachableShape(shapes: readonly SerializedShape[], library: LibrarySource, visit: (shape: SerializedShape) => void): void;
12467
+ declare function computeSpeechBubbleVertices(radius: number, tailAngleDeg: number, tailLengthPercent: number, tailWidthPercent: number, shiftAngleDeg?: number): Point[];
12603
12468
  /**
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.
12469
+ * Compute lightning-bolt vertices — a zigzag ribbon from top tip to bottom tip.
12470
+ * `boltSegments` line segments make the zigzag (alternating x offsets of
12471
+ * `boltJaggednessPercent * radius`); the ribbon is `boltWidthPercent * radius`
12472
+ * wide, perpendicular to each segment's bisector normal.
12618
12473
  */
12619
- declare function forEachShapeInLibraryDefs(rootDefIds: Iterable<string>, library: LibrarySource, visit: (shape: SerializedShape) => void): void;
12474
+ declare function computeLightningVertices(radius: number, boltSegments: number, boltJaggednessPercent: number, boltWidthPercent: number, shiftAngleDeg?: number): Point[];
12620
12475
  /**
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.
12476
+ * Compute heart path — two cubic Béziers meeting at the bottom tip and the
12477
+ * upper cleft. `lobeRadiusPercent` controls the horizontal extent of the two
12478
+ * top lobes; `cleftDepthPercent` controls how deep the central dip sits.
12631
12479
  */
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;
12480
+ declare function computeHeartPath(radius: number, lobeRadiusPercent: number, cleftDepthPercent: number, shiftAngleDeg?: number): string;
12635
12481
  /**
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.
12482
+ * Compute cloud path — a classic cartoon-cloud silhouette built as the outer
12483
+ * boundary of N overlapping circles placed around an elongated ellipse.
12484
+ * Circles go all the way around (top, sides, bottom), and the silhouette is
12485
+ * closed by walking each circle's outer arc via the intersection with its
12486
+ * next neighbor. Every transition between bumps is tangent-smooth — no flat
12487
+ * edges, no corners.
12639
12488
  *
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[]`.
12489
+ * `cloudBumps` (3..8) — number of bump circles forming the silhouette.
12490
+ * `cloudPuffinessPercent` (40..80) — drives bump overlap; higher values
12491
+ * smooth the underside; lower values leave the bumps more pronounced.
12492
+ */
12493
+ declare function computeCloudPath(radius: number, cloudBumps: number, cloudPuffinessPercent: number, shiftAngleDeg?: number): string;
12494
+ /**
12495
+ * Convert an array of vertices to an SVG path string.
12496
+ * Supports optional rounded corners via quadratic Bézier.
12497
+ */
12498
+ declare function verticesToPath(vertices: Point[], cornerRadius?: number, radius?: number): string;
12499
+ /**
12500
+ * Generate SVG path for a ring (two concentric circles).
12501
+ */
12502
+ declare function computeRingPath(radius: number, innerRadiusPercent: number, fillRule?: 'nonzero' | 'evenodd'): string;
12503
+ /**
12504
+ * Generate SVG path for an Archimedean spiral.
12505
+ */
12506
+ declare function computeSpiralPath(radius: number, turns: number, thicknessPercent: number, spiralDirection?: number, shiftAngleDeg?: number): string;
12507
+ declare function computeGearVertices(teeth: number, radius: number, toothDepthPercent: number, shiftAngleDeg?: number): Point[];
12508
+ /**
12509
+ * Generate full gear path including optional center hole.
12510
+ */
12511
+ declare function computeGearPath(teeth: number, radius: number, toothDepthPercent: number, cornerRadius?: number, holeRadiusPercent?: number, fillRule?: 'nonzero' | 'evenodd', shiftAngleDeg?: number): string;
12512
+ type CornerShape = 'round' | 'bevel' | 'notch' | 'scoop';
12513
+ /**
12514
+ * Generate SVG path for a rectangle with per-corner radius and shape.
12515
+ * Returns null if all corners are simple (use <rect> instead).
12516
+ */
12517
+ declare function computeRectanglePath(x: number, y: number, width: number, height: number, cornerRadius: number, cornerShape?: CornerShape, cornerMode?: 'uniform' | 'non-uniform', perCorner?: {
12518
+ radiusTL?: number;
12519
+ radiusTR?: number;
12520
+ radiusBR?: number;
12521
+ radiusBL?: number;
12522
+ shapeTL?: CornerShape;
12523
+ shapeTR?: CornerShape;
12524
+ shapeBR?: CornerShape;
12525
+ shapeBL?: CornerShape;
12526
+ }): string | null;
12527
+ /** The six flowchart shapes that fit an axis-aligned (x, y, w, h) box. */
12528
+ type FlowchartBoxType = 'diamond' | 'parallelogram' | 'trapezoid' | 'terminator' | 'cylinder' | 'document-shape';
12529
+ /** Per-shape knob, expressed as a percentage of width or height. */
12530
+ interface FlowchartBoxParams {
12531
+ /** Parallelogram: horizontal slant as a percentage of width. */
12532
+ slantPercent?: number;
12533
+ /** Trapezoid: top edge width as a percentage of the bottom edge. */
12534
+ topWidthPercent?: number;
12535
+ /** Cylinder: elliptical cap height as a percentage of total height. */
12536
+ capHeightPercent?: number;
12537
+ /** Document: bottom wave amplitude as a percentage of height. */
12538
+ waveAmplitudePercent?: number;
12539
+ }
12540
+ /**
12541
+ * SVG path data for a flowchart box, in absolute canvas coordinates.
12647
12542
  *
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.
12543
+ * Kept numerically identical to the editor's `generatePath()` methods in
12544
+ * `apps/editor/src/shapes/flowchart-shapes.ts` and `diamond.ts` so a
12545
+ * headless render and an editor export of the same document produce the
12546
+ * same silhouette. The defaults below mirror the editor's property
12547
+ * getters, which are what a document authored before a knob existed
12548
+ * falls back to.
12655
12549
  */
12656
- declare function forEachLibraryRefInState(state: SerializedShape['state'] | Record<string, unknown> | undefined, shapeId: string, visit: (libraryId: string) => void): void;
12550
+ declare function computeFlowchartBoxPath(type: FlowchartBoxType, x: number, y: number, width: number, height: number, params?: FlowchartBoxParams): string;
12657
12551
  /**
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.
12552
+ * Structural shape of one point in a spline/path model. Deliberately
12553
+ * looser than the `PathPoint` document type (string `pointType` /
12554
+ * `segmentType`) so editor and SDK point arrays both satisfy it.
12666
12555
  */
12667
- interface MarkerReferenceSets {
12668
- ids: Set<string>;
12669
- legacyEndpoints: Set<string>;
12556
+ interface SplinePointInput {
12557
+ x: number;
12558
+ y: number;
12559
+ handleIn?: Point;
12560
+ handleOut?: Point;
12561
+ pointType?: string;
12562
+ isSubpathStart?: boolean;
12563
+ subpathClosed?: boolean;
12564
+ moveRelative?: boolean;
12565
+ segmentRelative?: boolean;
12566
+ segmentType?: string;
12567
+ arcParams?: ArcParams;
12670
12568
  }
12671
12569
  /**
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.
12570
+ * Compute SVG path data from spline points.
12677
12571
  */
12678
- declare function collectMarkerReferences(shapes: readonly SerializedShape[], library?: LibrarySource): MarkerReferenceSets;
12679
12572
  /**
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.
12573
+ * How the serializer treats the shorthand path commands whose validity
12574
+ * depends on measured geometry (`H`/`V` for axis-aligned lines, `S`/`T`
12575
+ * for reflected control points).
12683
12576
  *
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.
12577
+ * - `'preserve'` (default) — emit the shorthand whenever the geometry
12578
+ * satisfies it. This is what authored path data round-trips through.
12579
+ * - `'expand'` — always emit the long form (`L`, `C`, `Q`). Required
12580
+ * when serializing a sequence of `d` values that must interpolate:
12581
+ * SVG only animates between path values with identical command
12582
+ * structure (SVG 1.1 §19.2.15.3), and a vertex crossing into or out of
12583
+ * axis alignment silently changes which shorthand applies, which would
12584
+ * break the animation partway through.
12688
12585
  */
12689
- declare function collectReferencedMarkerIds(shapes: readonly SerializedShape[], library: LibrarySource): Set<string>;
12586
+ type PathShorthandPolicy = 'preserve' | 'expand';
12587
+ declare function computeSplinePath(points: readonly SplinePointInput[], curveType: string, closed?: boolean, tension?: number, arcParams?: readonly ArcParams[], shorthand?: PathShorthandPolicy): string;
12588
+ /**
12589
+ * Compute a dash-array string for a given line style.
12590
+ *
12591
+ * @returns A `stroke-dasharray` value like `"8 4"`, or `null` for solid lines.
12592
+ */
12593
+ declare function computeDashArray(style: string, dashLength: number, gapLength: number): string | null;
12690
12594
 
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[];
12715
- }
12716
12595
  /**
12717
- * Ordered common-presentation semantics shared by headless rendering,
12718
- * component code generation, and the editor's incremental apply layer.
12596
+ * Analytic bounds for SVG path geometry.
12719
12597
  *
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.
12723
- */
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;
12930
-
12931
- /**
12932
- * Shared transform ownership for serialized container shapes.
12933
- *
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.
12598
+ * Computes the FILL-geometry axis-aligned bounding box of path data,
12599
+ * the same rectangle `SVGGraphicsElement.getBBox()` reports (SVG 2 section 8.10:
12600
+ * fill geometry only, with no stroke, no markers, no clip, and no
12601
+ * element transform) with no DOM, no layout, and no measurement. Callers may
12602
+ * supply an affine map to request the exact box in another user coordinate
12603
+ * system, as defined by SVG 2 sections 8.2, 8.6, 8.7, and 8.10.
12604
+ *
12605
+ * ## Shared command geometry
12606
+ *
12607
+ * `computeSplinePath` in `./geometry` is the single source of truth for
12608
+ * what a point model *denotes*: it resolves curve type (linear, cubic,
12609
+ * quadratic, arc, catmull-rom, basis, mixed), subpath breaks, closing
12610
+ * segments, and the H/V/S/T shorthand demotions. Deriving bounds from a
12611
+ * second, independent traversal of the point model would duplicate those
12612
+ * rules. The model entry point consumes the serializer's numeric command
12613
+ * stream directly, avoiding text construction and parsing. Dedicated
12614
+ * whole-path generators retain the text route. Both routes use the same
12615
+ * extrema kernel and preserve the geometry represented by the rendered d.
12616
+ *
12617
+ * `pathDataBounds` is equally useful on its own for imported or
12618
+ * hand-authored `d` strings, so both layers are public.
12619
+ *
12620
+ * ## Precision
12621
+ *
12622
+ * Cubic and quadratic extrema are exact (roots of the derivative).
12623
+ * Elliptical-arc extrema are exact for the true ellipse. Browsers
12624
+ * decompose arcs into ≤90° cubic Bézier approximations before measuring
12625
+ * (Blink: `SVGPathNormalizer::DecomposeArcToCubic`), so a browser's
12626
+ * `getBBox` can differ from the exact ellipse extent by the
12627
+ * approximation error of that decomposition — bounded by roughly
12628
+ * 2.7e-4 · r, and zero whenever the extremum lands on a segment
12629
+ * endpoint or midpoint (the classic k = 4/3·tan(Δθ/4) construction
12630
+ * interpolates both). The exact value is the spec-correct one, so this
12631
+ * module reports it rather than reproducing the browser's
12632
+ * approximation.
12939
12633
  */
12940
12634
 
12941
- type ContainerTransformOwner = 'canonical' | 'group-data' | 'none';
12942
- interface ResolvedContainerTransform {
12943
- matrix: Affine2D;
12944
- attribute: string | null;
12945
- owner: ContainerTransformOwner;
12946
- }
12947
- interface ContainerContentBounds {
12635
+ /** Axis-aligned rectangle in the coordinate system of the path data. */
12636
+ interface PathBoundsRect {
12948
12637
  minX: number;
12949
12638
  minY: number;
12950
12639
  maxX: number;
12951
12640
  maxY: number;
12952
12641
  }
12642
+ /** One-dimensional interval, the per-axis result of a curve extent. */
12643
+ interface Extent1D {
12644
+ min: number;
12645
+ max: number;
12646
+ }
12953
12647
  /**
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.
12648
+ * Center parameterization of an elliptical arc — the form in which the
12649
+ * arc's extrema are solvable. See SVG 2 Appendix B.2.2.
12956
12650
  */
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
-
12651
+ interface ArcCenterParameterization {
12652
+ /** Ellipse center, user space. */
12653
+ cx: number;
12654
+ cy: number;
12655
+ /** Radii after the B.2.5 sign and out-of-range corrections. */
12656
+ rx: number;
12657
+ ry: number;
12658
+ /** X-axis rotation, RADIANS (the endpoint form carries degrees). */
12659
+ phi: number;
12660
+ /** Start angle, radians. */
12661
+ theta1: number;
12662
+ /** Swept angle, radians; signed — negative sweeps run counterclockwise. */
12663
+ deltaTheta: number;
12664
+ }
12963
12665
  /**
12964
- * Pure geometry functions for computing shape vertices and paths.
12666
+ * Exact extent of one axis of a cubic Bézier.
12965
12667
  *
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.
12668
+ * `B(t) = (1-t)³p₀ + 3(1-t)²t·p₁ + 3(1-t)t²·p₂ + t³p₃`, so
12669
+ * `B'(t) = 3[(−p₀ + 3p₁ − 3p₂ + p₃)t² + 2(p₀ − 2p₁ + p₂)t + (p₁ − p₀)]`.
12670
+ * The extent is the union of both endpoints and every root of `B'` that
12671
+ * falls inside the segment.
13200
12672
  */
13201
12673
  declare function cubicBezierExtent1D(p0: number, p1: number, p2: number, p3: number): Extent1D;
13202
12674
  /**
@@ -13471,140 +12943,699 @@ declare function shapeLocalObjectBounds(shape: SerializedShape, host?: ShapeLoca
13471
12943
  /** Center of {@link shapeLocalObjectBounds}, sharing the same host contract. */
13472
12944
  declare function shapeLocalObjectCenter(shape: SerializedShape, host?: ShapeLocalObjectBoundsHost): Point | null;
13473
12945
 
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'];
12946
+ type SymbolViewportDiagnosticCode = 'invalid-symbol-length' | 'invalid-symbol-viewbox' | 'unresolved-symbol-viewport';
12947
+ interface SymbolViewportDiagnostic {
12948
+ code: SymbolViewportDiagnosticCode;
12949
+ message: string;
12950
+ }
12951
+ interface SymbolLengthContext {
12952
+ axis: 'x' | 'y' | 'width' | 'height' | 'refX' | 'refY';
12953
+ percentBasis?: number;
12954
+ }
12955
+ interface SymbolViewportHost {
12956
+ resolveLength?: (value: string, context: SymbolLengthContext) => number | null;
12957
+ }
12958
+ interface ResolvedSymbolViewport {
12959
+ readonly kind: 'symbol' | 'group';
12960
+ readonly renders: boolean;
12961
+ readonly useX: number;
12962
+ readonly useY: number;
12963
+ readonly useAttributes: Readonly<AuthoredUseGeometry>;
12964
+ /** Mapping after the use element's own transform. Includes use x/y and def root. */
12965
+ readonly contentMatrix: Affine2D;
12966
+ readonly childPercentBasis: SvgViewportSize | null;
12967
+ readonly viewport: ResolvedSvgViewport | null;
12968
+ readonly diagnostics: readonly SymbolViewportDiagnostic[];
12969
+ }
12970
+ /**
12971
+ * Resolve SVG 2 sections 5.4, 5.5.2, 8.2, and 8.6 through 8.8 for one
12972
+ * symbol instance. The use translation is on the right of its own transform;
12973
+ * this result intentionally starts after that own transform.
12974
+ */
12975
+ declare function resolveSymbolViewport(shape: SerializedShape, def: SymbolLibraryDef, parentViewport?: SvgViewportSize, host?: SymbolViewportHost): ResolvedSymbolViewport;
12976
+
12977
+ type BoundsRect = PathBoundsRect;
12978
+ type BoundsStatus = 'resolved' | 'empty' | 'unresolved' | 'cycle' | 'unsupported';
12979
+ 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';
12980
+ interface BoundsDiagnostic {
12981
+ code: BoundsDiagnosticCode;
12982
+ shapeId: string;
12983
+ message: string;
12984
+ path: readonly string[];
12985
+ }
12986
+ interface BoundsResult {
12987
+ bounds: BoundsRect | null;
12988
+ status: BoundsStatus;
12989
+ diagnostics: readonly BoundsDiagnostic[];
12990
+ }
12991
+ type TextObjectBoundsMeasurement = BoundsRect | readonly BoundsRect[];
12992
+ interface ShapeObjectBoundsHost {
12993
+ /**
12994
+ * SVG 2 section 8.10 defines text object bounds as the union of full glyph
12995
+ * cells. Returning individual cells preserves exact extrema after shear.
12996
+ * A single rectangle remains accepted for aggregate measurement hosts.
12997
+ */
12998
+ measureText?: (shape: SerializedShape, geometry: TextShapeGeometry) => TextObjectBoundsMeasurement | null;
12999
+ }
13000
+ interface DocumentBoundsHost extends ShapeObjectBoundsHost {
13001
+ /**
13002
+ * Replace the authored own matrix with a platform runtime projection.
13003
+ *
13004
+ * The editor uses this seam for active SMIL and CSS transform state that
13005
+ * is intentionally not persisted in the document. Supplemental reference,
13006
+ * symbol, and embedded-viewport placement remains owned by the tree walker.
13007
+ */
13008
+ resolveOwnTransform?: (shape: SerializedShape, authored: Affine2D) => Affine2D;
13009
+ /** Runtime conditional-processing hook. `false` removes the branch. */
13010
+ participatesInRendering?: (shape: SerializedShape) => boolean;
13011
+ /**
13012
+ * Runtime conditional-processing hook for a resolved symbol shadow root.
13013
+ * Pure bounds already honor authored `display:none`; a host can additionally
13014
+ * decide media-query, switch, or cascade participation without a DOM read.
13015
+ */
13016
+ participatesSymbolDefinition?: (definition: SymbolLibraryDef, instance: SerializedShape) => boolean;
13017
+ /** Resolve non-px symbol/use lengths that require a platform metrics host. */
13018
+ resolveSymbolLength?: SymbolViewportHost['resolveLength'];
13019
+ }
13020
+ interface DocumentBoundsView {
13021
+ roots(): readonly SerializedShape[];
13022
+ shape(id: string): SerializedShape | undefined;
13023
+ duplicateShapeIds?(): ReadonlySet<string>;
13024
+ libraryDefinition?(id: string): LibraryDef | undefined;
13025
+ duplicateLibraryIds?(): ReadonlySet<string>;
13026
+ children(shape: SerializedShape): readonly SerializedShape[];
13027
+ }
13028
+ interface DocumentBoundsOptions {
13029
+ toTarget?: Affine2D;
13030
+ parentViewport?: SvgViewportSize;
13031
+ }
13032
+ /**
13033
+ * Compute exact SVG object bounds for one registry geometry leaf in an
13034
+ * arbitrary target coordinate system. Own authored transforms are not added;
13035
+ * callers pass the complete affine that maps local geometry into the target.
13036
+ */
13037
+ declare function shapeObjectBoundsInSpace(shape: SerializedShape, toTarget: Affine2D, host?: ShapeObjectBoundsHost): BoundsResult;
13038
+ /**
13039
+ * Read-only snapshot adapter. `sceneTree` is document authority when present;
13040
+ * inline `state.children` is the maintained compatibility projection and the
13041
+ * fallback for older snapshots and unplaced hostile input.
13042
+ */
13043
+ declare function snapshotBoundsView(snapshot: HistorySnapshot): DocumentBoundsView;
13044
+ interface EmbeddedSvgViewportOverride {
13045
+ width?: number;
13046
+ height?: number;
13047
+ }
13048
+ interface EmbeddedSvgTransformResult {
13049
+ matrix: Affine2D;
13050
+ attribute: string | null;
13051
+ pivotRequired: boolean;
13052
+ pivotResolved: boolean;
13053
+ viewport: ResolvedSvgViewport;
13054
+ }
13055
+ /** Resolve the transform outside an embedded SVG viewport. */
13056
+ declare function resolveEmbeddedSvgTransform(shape: SerializedShape, parentViewport?: SvgViewportSize, override?: EmbeddedSvgViewportOverride): EmbeddedSvgTransformResult;
13057
+ /** Resolve the authored viewport frame used by editor selection and resizing. */
13058
+ declare function resolveEmbeddedSvgViewportFrameBounds(view: DocumentBoundsView, shapeOrId: SerializedShape | string, options?: DocumentBoundsOptions, host?: DocumentBoundsHost): BoundsResult;
13059
+ interface ShapeReferenceTransformResult {
13060
+ matrix: Affine2D;
13061
+ attribute: string | null;
13062
+ pivotRequired: boolean;
13063
+ pivotResolved: boolean;
13064
+ diagnostics: readonly BoundsDiagnostic[];
13065
+ }
13066
+ interface SymbolInstanceTransformResult {
13067
+ matrix: Affine2D;
13068
+ attribute: string | null;
13069
+ pivotRequired: boolean;
13070
+ pivotResolved: boolean;
13071
+ diagnostics: readonly BoundsDiagnostic[];
13072
+ }
13073
+ /** Resolve one shape subtree by object or document id. */
13074
+ declare function resolveShapeObjectBounds(view: DocumentBoundsView, shapeOrId: SerializedShape | string, options?: DocumentBoundsOptions, host?: DocumentBoundsHost): BoundsResult;
13075
+ /**
13076
+ * Resolve an element's object box in its own user coordinate system.
13077
+ *
13078
+ * The subject's authored transform is excluded while descendant transforms,
13079
+ * viewport mappings, references, and symbol placement remain authoritative.
13080
+ * This is the reference box CSS Transforms calls fill-box/content-box.
13081
+ */
13082
+ declare function resolveShapeLocalObjectBounds(view: DocumentBoundsView, shapeOrId: SerializedShape | string, options?: Pick<DocumentBoundsOptions, 'parentViewport'>, host?: DocumentBoundsHost): BoundsResult;
13083
+ /**
13084
+ * Resolve the use element's own transform for renderer parity.
13085
+ *
13086
+ * Canonical matrices need no geometry. Deprecated rotation/scale/skew
13087
+ * channels use the translated shadow subtree center, matching the bounds
13088
+ * walk instead of fabricating a pivot from non-authoritative width/height.
13089
+ */
13090
+ declare function resolveShapeReferenceTransform(view: DocumentBoundsView, shape: SerializedShape, host?: DocumentBoundsHost, parentViewport?: SvgViewportSize): ShapeReferenceTransformResult;
13091
+ /**
13092
+ * Resolve the transform emitted on one symbol-instance use element. SVG 2
13093
+ * section 5.5.2 orders imported use transform, canonical or legacy instance
13094
+ * transform, and then the supplemental x/y translation into the shadow tree.
13095
+ */
13096
+ declare function resolveSymbolInstanceTransform(view: DocumentBoundsView, shape: SerializedShape, host?: DocumentBoundsHost, parentViewport?: SvgViewportSize): SymbolInstanceTransformResult;
13097
+ /** Union every snapshot root in the requested target coordinate system. */
13098
+ declare function documentObjectBounds(view: DocumentBoundsView, options?: DocumentBoundsOptions, host?: DocumentBoundsHost): BoundsResult;
13099
+ interface InlineContainerTransformResult {
13100
+ transform: ResolvedContainerTransform;
13101
+ contentBounds: BoundsResult | null;
13102
+ pivotRequired: boolean;
13103
+ pivotResolved: boolean;
13104
+ }
13105
+ /**
13106
+ * Resolve a serialized container's emitted transform from its inline content.
13107
+ * Renderers use this same local-content walk as analytic bounds so legacy
13108
+ * rotation/scale/skew channels cannot silently choose a different pivot.
13109
+ */
13110
+ declare function resolveInlineContainerTransform(shape: SerializedShape, host?: DocumentBoundsHost): InlineContainerTransformResult;
13111
+
13112
+ /**
13113
+ * Symbol-instance resolution - the single definition of what a
13114
+ * `symbol-instance` shape points at.
13115
+ *
13116
+ * A `symbol-instance` renders as `<use href="#target">` (SVG 2 §5.6), and
13117
+ * the target is not always the library def's own id. Variants and
13118
+ * per-instance overrides have no representation in the library - a
13119
+ * `SymbolLibraryDef` carries every variant's shapes, but which one an
13120
+ * instance selects, and what its overrides do to them, is instance state.
13121
+ * The renderer therefore MATERIALIZES a `<symbol>` per referenced
13122
+ * (def, variant, override) combination under a synthetic id:
13123
+ *
13124
+ * - no variant, no overrides -> `<def id>` (the library def)
13125
+ * - variant `state=hover` -> `<def id>--state_hover`
13126
+ * - any overrides -> `<def id>--ovr-<instance id>`
13127
+ *
13128
+ * Two call sites depend on that mapping and MUST agree on it, or a `<use>`
13129
+ * points at a def that was never emitted:
13130
+ *
13131
+ * 1. `renderShape` (shape-renderers.ts) writes the `<use href>`.
13132
+ * 2. `renderSymbolDefs` (svg-renderer.ts) emits the `<symbol>` bodies.
13133
+ *
13134
+ * They agree because both go through this module. `targetId` and
13135
+ * `resolveShapes` are two halves of one decision - the `--ovr-` id is
13136
+ * exactly the case where overrides are applied, the `--<variant>` id
13137
+ * exactly the case where a variant array replaces `def.shapes` - so they
13138
+ * live together and are never re-derived elsewhere.
13139
+ *
13140
+ * Dependency-free apart from types, so both the shape dispatcher and the
13141
+ * document renderer can import it without an import cycle.
13142
+ *
13143
+ * @packageDocumentation
13144
+ */
13145
+
13146
+ type SymbolResolutionDiagnosticCode = 'unknown-symbol-variant' | 'ambiguous-symbol-override-target' | 'unresolved-symbol-override-target';
13147
+ interface SymbolResolutionDiagnostic {
13148
+ code: SymbolResolutionDiagnosticCode;
13149
+ shapeId: string;
13150
+ message: string;
13151
+ }
13152
+ interface ResolvedSymbolInstanceContent {
13153
+ readonly shapes: readonly SerializedShape[];
13154
+ readonly requestedVariantKey: string;
13155
+ readonly effectiveVariantKey: string;
13156
+ readonly candidateTargetId: string;
13157
+ readonly materializationKey: string;
13158
+ readonly materialized: boolean;
13159
+ readonly diagnostics: readonly SymbolResolutionDiagnostic[];
13160
+ }
13161
+ /** Resolve variant selection and recursive immutable overrides once for every surface. */
13162
+ declare function resolveSymbolInstanceContent(def: SymbolLibraryDef, instance: SerializedShape): ResolvedSymbolInstanceContent;
13163
+ /**
13164
+ * The `<symbol>` id an instance's `<use href>` resolves to.
13165
+ *
13166
+ * Mirrors the editor-side `exportSymbolInstances` in
13167
+ * `apps/editor/src/canvas/svg-export-finalizer.ts` so an editor export and
13168
+ * a headless render of the same document target the same ids.
13169
+ *
13170
+ * `dedicated` forces the per-instance `--ovr-` id even without
13171
+ * overrides — the animated-export policy for instances driven by an
13172
+ * `instanceVariant` timeline track, whose injected variant-transition
13173
+ * animations must not bleed into sibling instances of the same def. The
13174
+ * editor's animated export materializes those dedicated defs and passes
13175
+ * the flag here so its `<use href>` retargeting and the def id agree.
13176
+ */
13177
+ declare function symbolInstanceTargetId(instance: SerializedShape, dedicated?: boolean): string;
13178
+ /**
13179
+ * The shapes that make up the `<symbol>` body an instance resolves to:
13180
+ * the selected variant (falling back to `def.shapes`, the default
13181
+ * variant, when the key is absent or unknown) with the instance's
13182
+ * per-shape overrides merged on top.
13183
+ *
13184
+ * Overrides are keyed by INNER shape id and merge shallowly into that
13185
+ * shape's state, which is what keeps the inner ids - and therefore any
13186
+ * shape-derived def ids such as `filter-<id>` - stable across
13187
+ * materializations.
13188
+ */
13189
+ declare function resolveSymbolInstanceShapes(def: SymbolLibraryDef, instance: SerializedShape): SerializedShape[];
13190
+
13191
+ type SymbolMaterializationDiagnosticCode = SymbolResolutionDiagnosticCode | 'unresolved-symbol-definition' | 'duplicate-library-id' | 'symbol-cycle';
13192
+ interface SymbolMaterializationDiagnostic {
13193
+ readonly code: SymbolMaterializationDiagnosticCode;
13194
+ readonly shapeId: string;
13195
+ readonly message: string;
13196
+ }
13197
+ interface SymbolMaterialization {
13198
+ readonly materializationKey: string;
13199
+ readonly targetId: string;
13200
+ readonly candidateTargetId: string;
13201
+ readonly definition: SymbolLibraryDef;
13202
+ readonly shapes: readonly SerializedShape[];
13203
+ readonly parentViewport?: Readonly<SvgViewportSize>;
13204
+ readonly viewport: ResolvedSymbolViewport;
13205
+ }
13206
+ interface SymbolInstanceMaterialization {
13207
+ readonly targetId: string | null;
13208
+ readonly definition: SymbolLibraryDef | null;
13209
+ readonly materializationKey: string | null;
13210
+ /** Final occurrence-local materialization used by every render surface. */
13211
+ readonly materialization: SymbolMaterialization | null;
13212
+ readonly diagnostics: readonly SymbolMaterializationDiagnostic[];
13213
+ readonly parentViewport?: Readonly<SvgViewportSize>;
13214
+ readonly viewport: ResolvedSymbolViewport | null;
13215
+ }
13216
+ interface SymbolMaterializationPlan {
13217
+ readonly materializations: readonly SymbolMaterialization[];
13218
+ readonly diagnostics: readonly SymbolMaterializationDiagnostic[];
13219
+ resolve(instance: SerializedShape): SymbolInstanceMaterialization | undefined;
13220
+ }
13221
+ interface SymbolMaterializationPlanOptions {
13222
+ readonly reservedIds?: ReadonlySet<string>;
13223
+ readonly parentViewport?: Readonly<SvgViewportSize>;
13224
+ readonly viewportHost?: SymbolViewportHost;
13225
+ /**
13226
+ * Per-occurrence render policy supplied by a document surface.
13227
+ *
13228
+ * An `instanceVariant` animation starts from its first keyed state and
13229
+ * needs a dedicated target so injected animation never changes sibling
13230
+ * instances that otherwise share the same definition.
13231
+ */
13232
+ readonly instancePolicy?: (instance: SerializedShape) => {
13233
+ readonly initialVariantKey?: string;
13234
+ readonly dedicated?: boolean;
13235
+ } | undefined;
13236
+ }
13237
+ /**
13238
+ * Build the complete SVG 2 section 5.5 shadow-tree materialization plan for
13239
+ * one document. Cycle identity is semantic definition + variant + override
13240
+ * content, so finite cross-variant recursion remains legal while an actual
13241
+ * repeated shadow root is pruned before markup emission.
13242
+ */
13243
+ declare function buildSymbolMaterializationPlan(library: readonly LibraryDef[], roots: readonly SerializedShape[], options?: SymbolMaterializationPlanOptions): SymbolMaterializationPlan;
13244
+
13245
+ /**
13246
+ * Reachability walk over the shapes a rendered document actually paints.
13247
+ *
13248
+ * `<defs>` emission is reference-driven: a def is emitted only when
13249
+ * something in the rendered output points at it with `url(#id)`. Getting
13250
+ * that set right means walking more than the top-level shape array,
13251
+ * because two nesting mechanisms put `url(#…)` references into the output
13252
+ * without a top-level shape carrying them:
13253
+ *
13254
+ * 1. **Container children.** `<g>`, `<a>`, `<switch>` and nested `<svg>`
13255
+ * render `state.children` inline (see `renderContainerChildren` in
13256
+ * shape-renderers.ts), so a child's fill / filter / marker reference
13257
+ * is live in the document.
13258
+ * 2. **Library def contents.** A `<symbol>` or `<marker>` def emits its
13259
+ * inner shapes verbatim, so those shapes' references are live too -
13260
+ * SVG 2 §5.5 resolves them against the document `<defs>`, not against
13261
+ * any def-local scope.
13262
+ *
13263
+ * Both are transitive: a symbol's inner shape can be a group whose child
13264
+ * instantiates another symbol. Reachability is therefore a fixpoint, and
13265
+ * a symbol that (directly or indirectly) instantiates itself must not
13266
+ * spin - each def's contents are expanded at most once.
13267
+ *
13268
+ * This module is intentionally dependency-free apart from types so that
13269
+ * both `library-renderers.ts` (which emits the defs) and
13270
+ * `shape-renderers.ts` (which emits built-in `<marker>` defs) can share
13271
+ * one definition of "reachable" without an import cycle. The editor's
13272
+ * live `<defs>` reconciler (`MarkerManager`) shares it too, through
13273
+ * `forEachShapeInLibraryDefs` - which is what stops the canvas and the
13274
+ * exported file from disagreeing about which defs a document needs.
13275
+ *
13276
+ * @packageDocumentation
13277
+ */
13278
+
13279
+ /**
13280
+ * Id → def lookup for the reachability walks.
13281
+ *
13282
+ * A caller that already owns a keyed store of its defs (the editor's
13283
+ * `LibraryRegistry` is exactly such a map) can hand it straight to the
13284
+ * walkers instead of paying to rebuild an index per call - which matters
13285
+ * because the editor runs `collectReferencedMarkerIds` on the animation
13286
+ * path.
13287
+ */
13288
+ type LibraryIndex = ReadonlyMap<string, LibraryDef>;
13289
+ /** Accept either the array form or a prebuilt index. */
13290
+ type LibrarySource = readonly LibraryDef[] | LibraryIndex;
13291
+ /**
13292
+ * Call `visit` once for every shape whose rendered form can appear in the
13293
+ * document: each top-level shape, every container descendant, and the
13294
+ * inner shapes (plus symbol variants) of the `<symbol>` / `<marker>`
13295
+ * library defs those shapes reach.
13296
+ *
13297
+ * Visit order is deterministic and stable: top-level shapes in document
13298
+ * order first, then the transitive frontier discovered from them. Callers
13299
+ * whose output order depends on discovery order can rely on that - and on
13300
+ * the fact that the top-level prefix is exactly the pre-transitive walk.
13301
+ *
13302
+ * `visit` may be called more than once for the same shape only if the
13303
+ * document itself contains it more than once (e.g. two symbols sharing an
13304
+ * inner shape object); accumulating callers should be idempotent.
13305
+ *
13306
+ * @param shapes Top-level shapes of the rendered document.
13307
+ * @param library Library defs available for reference resolution. Pass an
13308
+ * empty array to walk containers only.
13309
+ * @param visit Callback invoked per reachable shape.
13310
+ */
13311
+ declare function forEachReachableShape(shapes: readonly SerializedShape[], library: LibrarySource, visit: (shape: SerializedShape) => void): void;
13312
+ /**
13313
+ * Same walk, seeded from library def ids rather than from shapes: visits
13314
+ * the contents of each named `<symbol>` / `<marker>` def and everything
13315
+ * those contents transitively reach.
13316
+ *
13317
+ * This is the half of reachability that a LIVE editor cannot answer from
13318
+ * its shape registry. Symbol-instance content is materialized as
13319
+ * temporary shapes that never enter the registry or the scene graph, so
13320
+ * a document-side walk sees the `symbolId` but nothing inside it. Seeding
13321
+ * from the def ids the document reaches recovers exactly the missing
13322
+ * frontier, and - because it is the same engine the export collector runs
13323
+ * - recovers it with identical nesting, variant, and cycle semantics.
13324
+ *
13325
+ * Ids that are absent from `library`, or that name a def with no contents
13326
+ * (paint servers, filters), are skipped.
13327
+ */
13328
+ declare function forEachShapeInLibraryDefs(rootDefIds: Iterable<string>, library: LibrarySource, visit: (shape: SerializedShape) => void): void;
13329
+ /**
13330
+ * Marker ids a single shape's state puts into the rendered output: the
13331
+ * three explicit `marker-*` refs, plus the built-in ids the legacy
13332
+ * `startEndpoint` / `endEndpoint` dropdowns resolve to (`Line` and
13333
+ * `Path` fold those into their painted refs - see
13334
+ * `endpointMarkerAttributes` in codegen/helpers.ts and
13335
+ * `Line.getEffectiveMarkerRefs()` in the editor).
13336
+ *
13337
+ * One definition, shared by the export collector and by the editor's live
13338
+ * `<defs>` reconciler, so the two cannot disagree about what a given
13339
+ * state means.
13340
+ */
13341
+ declare function forEachMarkerRefInState(state: SerializedShape['state'] | Record<string, unknown> | undefined, visit: (markerId: string) => void): void;
13342
+ /** The built-in `<marker>` id a legacy endpoint name resolves to. */
13343
+ declare function legacyEndpointMarkerId(endpoint: string): string;
13344
+ /**
13345
+ * Library def ids a single shape's state references: fill / stroke paint
13346
+ * servers, the filter chain, the marker refs, and the symbol it
13347
+ * instantiates.
13348
+ *
13349
+ * Mirrors the reference set `collectReferencedLibraryDefs` scans per
13350
+ * shape, including the legacy fallbacks - an inline `fillGradient`
13351
+ * payload with no `fillLibraryId` still names a def, and a populated
13352
+ * `filters` array with no `filterLibraryIds` names the shape-derived
13353
+ * `filter-<shapeId>`. It reports RAW ids and makes no library lookup, so
13354
+ * a caller can use it against a live document whose defs are stored
13355
+ * somewhere other than a `LibraryDef[]`.
13356
+ *
13357
+ * Deliberately NOT shared with `collectReferencedLibraryDefs` itself:
13358
+ * that function has to decide, per id, between emitting the library
13359
+ * entry and synthesizing a transient def from the inline payload, and
13360
+ * the order in which it resolves the two is observable in the emitted
13361
+ * `<defs>`. Keeping the two separate leaves that byte-order contract
13362
+ * untouched; that they agree on the reference SET is enforced by test
13363
+ * rather than by shared code.
13364
+ */
13365
+ declare function forEachLibraryRefInState(state: SerializedShape['state'] | Record<string, unknown> | undefined, shapeId: string, visit: (libraryId: string) => void): void;
13366
+ /**
13367
+ * Marker references found by walking a document, split the way
13368
+ * `renderBuiltinMarkerDefs` consumes them:
13369
+ * - `ids`: raw marker ids from `state.markerStart` / `markerMid` /
13370
+ * `markerEnd` - built-in (`mkr-builtin-arrow`, `line-marker-arrow`)
13371
+ * or user marker ids.
13372
+ * - `legacyEndpoints`: endpoint names from `state.startEndpoint` /
13373
+ * `endEndpoint` (e.g. `'arrow'`), which `Line` / `Path` emit as a
13374
+ * shortcut to built-in markers without explicit `marker-*` attrs.
13375
+ */
13376
+ interface MarkerReferenceSets {
13377
+ ids: Set<string>;
13378
+ legacyEndpoints: Set<string>;
13379
+ }
13380
+ /**
13381
+ * Walk a document for marker references. Reachability, not just the top
13382
+ * level: container children render inline and `<symbol>` / `<marker>`
13383
+ * inner shapes emit verbatim, so a `marker-start="url(#line-marker-arrow)"`
13384
+ * written from inside a symbol needs its built-in def as much as a
13385
+ * top-level one does.
13386
+ */
13387
+ declare function collectMarkerReferences(shapes: readonly SerializedShape[], library?: LibrarySource): MarkerReferenceSets;
13388
+ /**
13389
+ * Every `<marker>` id a rendered document needs a def for, as one flat
13390
+ * set: the raw `marker-*` refs plus the built-in ids the legacy endpoint
13391
+ * dropdowns resolve to.
13392
+ *
13393
+ * This is the reference answer to "which markers must be in `<defs>`?".
13394
+ * The editor's live reconciler computes the same set incrementally from
13395
+ * its model; that the two agree is what keeps canvas and export from
13396
+ * diverging.
13397
+ */
13398
+ declare function collectReferencedMarkerIds(shapes: readonly SerializedShape[], library: LibrarySource): Set<string>;
13399
+
13400
+ type PresentationValueReader = (key: string) => unknown;
13401
+ interface PresentationSemanticContext {
13402
+ shapeId: string;
13403
+ includeAuthoredAttributes?: boolean;
13404
+ includeContainerPresentation?: boolean;
13405
+ retainCssAnimationDeclarations?: boolean;
13406
+ /**
13407
+ * The live editor projects resolved static stylesheet values inline so its
13408
+ * structural scaffolding cannot alter selector matching. Serialized SVG
13409
+ * renderers leave both stylesheet channels to the canonical stylesheet.
13410
+ */
13411
+ projectStaticStylesheetValues?: boolean;
13412
+ }
13413
+ interface PresentationWrite {
13414
+ channel: 'attribute' | 'style';
13415
+ name: string;
13416
+ value: string | number | null;
13417
+ allowEmpty?: boolean;
13418
+ ifAbsent?: boolean;
13419
+ }
13420
+ interface PresentationSemanticEntry {
13421
+ id: string;
13422
+ keys: readonly string[];
13423
+ project: (read: PresentationValueReader, context: PresentationSemanticContext) => readonly PresentationWrite[];
13424
+ }
13425
+ /**
13426
+ * Ordered common-presentation semantics shared by headless rendering,
13427
+ * component code generation, and the editor's incremental apply layer.
13428
+ *
13429
+ * Order is part of the contract. The dash row follows linecap so dotted
13430
+ * style can make the final cap round, and unmodeled authored attributes
13431
+ * remain the final row so typed state keeps one deterministic owner.
13432
+ */
13433
+ declare const PRESENTATION_SEMANTICS: readonly [{
13434
+ readonly id: "fill";
13435
+ readonly keys: readonly ["fillColor", "fillType", "fillGradient", "fillLibraryId", "inheritFill", "authoredFillPaint"];
13436
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13437
+ }, {
13438
+ readonly id: "element-opacity";
13439
+ readonly keys: readonly ["opacity", "preserveOpacity"];
13440
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13441
+ }, {
13442
+ readonly id: "fill-opacity";
13443
+ readonly keys: readonly ["fillOpacity", "preserveFillOpacity", "fillType", "fillGradient", "inheritFill"];
13444
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13445
+ }, {
13446
+ readonly id: "fill-rule";
13447
+ readonly keys: readonly ["fillRule"];
13448
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13449
+ }, {
13450
+ readonly id: "stroke";
13451
+ readonly keys: readonly ["borderColor", "strokeType", "strokeGradient", "strokeLibraryId", "inheritStroke", "authoredStrokePaint"];
13452
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13453
+ }, {
13454
+ readonly id: "stroke-width";
13455
+ readonly keys: readonly ["borderWidth"];
13456
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13457
+ }, {
13458
+ readonly id: "stroke-opacity";
13459
+ readonly keys: readonly ["strokeOpacity", "preserveStrokeOpacity", "strokeType", "strokeGradient", "inheritStroke"];
13460
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13461
+ }, {
13462
+ readonly id: "blend-mode";
13463
+ readonly keys: readonly ["blendMode"];
13464
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13465
+ }, {
13466
+ readonly id: "paint-order";
13467
+ readonly keys: readonly ["paintOrder"];
13468
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13469
+ }, {
13470
+ readonly id: "inline-style";
13471
+ readonly keys: readonly ["inlineStyle"];
13472
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13473
+ }, {
13474
+ readonly id: "markers";
13475
+ readonly keys: readonly ["markerStart", "markerMid", "markerEnd"];
13476
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13477
+ }, {
13478
+ readonly id: "stroke-linejoin";
13479
+ readonly keys: readonly ["strokeLinejoin"];
13480
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13481
+ }, {
13482
+ readonly id: "stroke-linecap";
13483
+ readonly keys: readonly ["strokeLinecap"];
13484
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13485
+ }, {
13486
+ readonly id: "stroke-miterlimit";
13487
+ readonly keys: readonly ["strokeMiterlimit"];
13488
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13489
+ }, {
13490
+ readonly id: "stroke-dasharray";
13491
+ readonly keys: readonly ["lineStyle", "dashLength", "gapLength", "strokeDasharray", "strokeLinecap"];
13492
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13493
+ }, {
13494
+ readonly id: "stroke-dashoffset";
13495
+ readonly keys: readonly ["dashOffset"];
13496
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13497
+ }, {
13498
+ readonly id: "shape-rendering";
13499
+ readonly keys: readonly ["shapeRendering"];
13500
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13501
+ }, {
13502
+ readonly id: "text-rendering";
13503
+ readonly keys: readonly ["textRendering"];
13504
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13505
+ }, {
13506
+ readonly id: "image-rendering";
13507
+ readonly keys: readonly ["imageRendering"];
13508
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13509
+ }, {
13510
+ readonly id: "color-rendering";
13511
+ readonly keys: readonly ["colorRendering"];
13512
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13513
+ }, {
13514
+ readonly id: "color-interpolation";
13515
+ readonly keys: readonly ["colorInterpolation"];
13516
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13517
+ }, {
13518
+ readonly id: "filter";
13519
+ readonly keys: readonly ["filters", "filterLibraryIds"];
13520
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13521
+ }, {
13522
+ readonly id: "system-language";
13523
+ readonly keys: readonly ["systemLanguage"];
13524
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13525
+ }, {
13526
+ readonly id: "required-extensions";
13527
+ readonly keys: readonly ["requiredExtensions"];
13528
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13529
+ }, {
13530
+ readonly id: "vector-effect";
13531
+ readonly keys: readonly ["vectorEffect"];
13532
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13533
+ }, {
13534
+ readonly id: "visibility";
13535
+ readonly keys: readonly ["visibility"];
13536
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13537
+ }, {
13538
+ readonly id: "display";
13539
+ readonly keys: readonly ["displayAttr"];
13540
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13541
+ }, {
13542
+ readonly id: "visible";
13543
+ readonly keys: readonly ["visible"];
13544
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13545
+ }, {
13546
+ readonly id: "path-length";
13547
+ readonly keys: readonly ["pathLength"];
13548
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13549
+ }, {
13550
+ readonly id: "transform-box";
13551
+ readonly keys: readonly ["transformBox"];
13552
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13553
+ }, {
13554
+ readonly id: "transform";
13555
+ readonly keys: readonly ["rotation", "transformMatrix", "translateX", "translateY", "skewX", "skewY", "scaleX", "scaleY", "customPivot", "rawTransform"];
13556
+ readonly project: () => never[];
13557
+ }, {
13558
+ readonly id: "locked";
13559
+ readonly keys: readonly ["locked"];
13560
+ readonly project: () => never[];
13561
+ }, {
13562
+ readonly id: "metadata";
13563
+ readonly keys: readonly ["metadata"];
13564
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13565
+ }, {
13566
+ readonly id: "css-clip-path";
13567
+ readonly keys: readonly ["cssClipPath"];
13568
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13569
+ }, {
13570
+ readonly id: "css-mask-properties";
13571
+ readonly keys: readonly ["cssMaskProperties"];
13572
+ readonly project: (read: PresentationValueReader) => PresentationWrite[];
13573
+ }, {
13574
+ readonly id: "container-presentation";
13575
+ readonly keys: readonly ["containerPresentation"];
13576
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13577
+ }, {
13578
+ readonly id: "authored-attributes";
13579
+ readonly keys: readonly ["authoredAttributes"];
13580
+ readonly project: (read: PresentationValueReader, context: PresentationSemanticContext) => PresentationWrite[];
13581
+ }];
13582
+ type PresentationSemanticId = (typeof PRESENTATION_SEMANTICS)[number]['id'];
13583
+ declare function projectPresentationEntry(entry: PresentationSemanticEntry, read: PresentationValueReader, context: PresentationSemanticContext): readonly PresentationWrite[];
13584
+ declare function projectPresentation(read: PresentationValueReader, context: PresentationSemanticContext): PresentationWrite[];
13585
+ declare function serializedPresentationReader(state: SerializedShapeState): PresentationValueReader;
13586
+
13587
+ type DefinitionAttribute = readonly [name: string, value: string | number];
13588
+ interface GradientStopEnvelope {
13589
+ attributes: readonly DefinitionAttribute[];
13516
13590
  }
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[];
13591
+ interface GradientDefinitionEnvelope {
13592
+ element: 'linearGradient' | 'radialGradient';
13593
+ attributes: readonly DefinitionAttribute[];
13594
+ stops: readonly GradientStopEnvelope[];
13524
13595
  }
13525
- interface DocumentBoundsOptions {
13526
- toTarget?: Affine2D;
13527
- parentViewport?: SvgViewportSize;
13596
+ interface PatternDefinitionEnvelope {
13597
+ attributes: readonly DefinitionAttribute[];
13598
+ content: string;
13528
13599
  }
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;
13600
+ type FilterColorInterpolation = 'auto' | 'sRGB' | 'linearRGB';
13601
+ type FilterUnits = 'userSpaceOnUse' | 'objectBoundingBox';
13602
+ interface FilterElementAttrs {
13603
+ colorInterpolation?: FilterColorInterpolation | null;
13604
+ filterUnits?: FilterUnits;
13605
+ primitiveUnits?: FilterUnits;
13606
+ x?: string;
13607
+ y?: string;
13608
+ width?: string;
13609
+ height?: string;
13544
13610
  }
13545
- interface EmbeddedSvgTransformResult {
13546
- matrix: Affine2D;
13547
- attribute: string | null;
13548
- pivotRequired: boolean;
13549
- pivotResolved: boolean;
13550
- viewport: ResolvedSvgViewport;
13611
+ interface FilterEnvelopeBase {
13612
+ attributes: readonly DefinitionAttribute[];
13551
13613
  }
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[];
13614
+ interface RawFilterEnvelope extends FilterEnvelopeBase {
13615
+ kind: 'raw';
13616
+ content: string;
13562
13617
  }
13563
- interface SymbolInstanceTransformResult {
13564
- matrix: Affine2D;
13565
- attribute: string | null;
13566
- pivotRequired: boolean;
13567
- pivotResolved: boolean;
13568
- diagnostics: readonly BoundsDiagnostic[];
13618
+ interface PrimitiveChainFilterEnvelope extends FilterEnvelopeBase {
13619
+ kind: 'primitive-chain';
13620
+ chain: SvgPrimitiveChainFilter;
13569
13621
  }
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;
13622
+ interface GeneratedFilterEnvelope extends FilterEnvelopeBase {
13623
+ kind: 'generated';
13624
+ filters: readonly ShapeFilter[];
13625
+ primitiveUnits: FilterUnits;
13601
13626
  }
13627
+ type FilterDefinitionEnvelope = RawFilterEnvelope | PrimitiveChainFilterEnvelope | GeneratedFilterEnvelope;
13602
13628
  /**
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.
13629
+ * Build the one portable pattern definition consumed by static rendering and
13630
+ * platform projections. SVG 2 section 14.3 keeps tile lengths on the pattern
13631
+ * resource, so valid source spellings remain authoritative over the numeric
13632
+ * editor projection.
13606
13633
  */
13607
- declare function resolveInlineContainerTransform(shape: SerializedShape, host?: DocumentBoundsHost): InlineContainerTransformResult;
13634
+ declare function patternDefinitionEnvelope(id: string, pattern: PatternFill): PatternDefinitionEnvelope;
13635
+ declare function linearGradientEnvelope(id: string, gradient: LinearGradient): GradientDefinitionEnvelope;
13636
+ declare function radialGradientEnvelope(id: string, gradient: RadialGradient): GradientDefinitionEnvelope;
13637
+ declare function filterChainExtendsBounds(filters: readonly ShapeFilter[]): boolean;
13638
+ declare function filterDefinitionEnvelope(filterId: string, filters: readonly ShapeFilter[], attrs?: FilterElementAttrs): FilterDefinitionEnvelope | null;
13608
13639
 
13609
13640
  /**
13610
13641
  * Connector routing — pure path-math for line shapes acting as connectors,
@@ -13733,6 +13764,20 @@ declare function renderForeignObject(shape: SerializedShape, ctx?: RenderShapeCo
13733
13764
  * is optional and degrades to the context-free behavior when absent, so
13734
13765
  * the per-shape renderers stay callable in isolation.
13735
13766
  */
13767
+ /**
13768
+ * Root-open-tag rewrites a planning stage applies to an already-rendered
13769
+ * shape. The two operations are kept distinct and named rather than folded
13770
+ * into one generic map, because they are not interchangeable: an attribute
13771
+ * the renderer owns is REPLACED, while inline style declarations are
13772
+ * APPENDED so the planner's contribution loses to nothing the shape itself
13773
+ * declared for a different property and wins the cascade against its own.
13774
+ */
13775
+ interface RenderedRootOverrides {
13776
+ /** Attribute values that replace whatever the renderer emitted. */
13777
+ readonly replace?: ReadonlyMap<string, string>;
13778
+ /** Declarations appended to the element's existing inline `style`. */
13779
+ readonly appendStyle?: string;
13780
+ }
13736
13781
  interface RenderShapeContext {
13737
13782
  /** Keep native inline CSS animation assignments instead of normalized SMIL fallback. */
13738
13783
  retainCssAnimationDeclarations?: boolean;
@@ -13808,6 +13853,21 @@ interface RenderShapeContext {
13808
13853
  forcedElementIds?: ReadonlySet<string>;
13809
13854
  /** Deterministic collision-free root element id allocated by the render plan. */
13810
13855
  elementIdForShape?: (shape: SerializedShape) => string | undefined;
13856
+ /**
13857
+ * Root-attribute values that replace whatever the renderer emitted for the
13858
+ * same names, applied after authored passthrough and before animation
13859
+ * children.
13860
+ *
13861
+ * Ephemeral rendered-state input from a planning stage, in the same sense as
13862
+ * {@link renderClipMaskDefinitionShape}'s transform override: the serialized
13863
+ * shape remains the sole document authority, and the override exists because
13864
+ * the emitted frame is a function of the document PLUS a timeline. The
13865
+ * variant-transition planner uses it to rewrite the pre-SMIL base transform
13866
+ * of a polygon-family inner shape, which no combination of shape state can
13867
+ * spell (the kernel emits a simplified `translate(cx, cy) rotate(r)` frame
13868
+ * that the shape's own transform emission does not produce).
13869
+ */
13870
+ rootAttributeOverridesForShape?: (shape: SerializedShape) => RenderedRootOverrides | undefined;
13811
13871
  /** SMIL children owned by this exact serialized shape in the document tree. */
13812
13872
  animationElementsForShape?: (shape: SerializedShape) => readonly string[] | undefined;
13813
13873
  /** SMIL children targeting this text shape's canonical `<textPath>` sub-element. */
@@ -13838,6 +13898,24 @@ interface RenderShapeContext {
13838
13898
  readonly siblingIndex: number;
13839
13899
  readonly markup: string;
13840
13900
  }[] | undefined;
13901
+ /**
13902
+ * What an `instanceVariant` transition adds to one EMITTED symbol
13903
+ * definition: inner content appended after the definition's own, and the
13904
+ * scope class the CSS encoding puts on the definition root.
13905
+ *
13906
+ * Keyed by emitted target id rather than definition id: dedicated
13907
+ * per-instance materializations share a definition but must not share the
13908
+ * content a track derives for one of them.
13909
+ *
13910
+ * The children arrive pre-rendered because they are addressed by a
13911
+ * synthesized inner id (`<id>--xf`) that is deliberately NOT a document
13912
+ * shape id, so they cannot travel as `SerializedShape`s through the
13913
+ * id-keyed content map {@link renderResolvedSymbolLibraryDef} builds.
13914
+ */
13915
+ variantTransitionDefinitionContent?: (emittedId: string) => {
13916
+ readonly children: readonly string[];
13917
+ readonly scopeClass?: string;
13918
+ } | undefined;
13841
13919
  }
13842
13920
  /**
13843
13921
  * SymbolInstance - a component instance, emitted as SVG 2 §5.6
@@ -13909,6 +13987,104 @@ declare function renderRadialGradient(id: string, g: RadialGradient, ctx?: Rende
13909
13987
  */
13910
13988
  declare function renderBuiltinMarkerDefs(referenced: MarkerReferenceSets | SerializedShape[], library?: readonly LibraryDef[]): string;
13911
13989
 
13990
+ /**
13991
+ * Variant-transition render planning — the stage that turns an
13992
+ * `instanceVariant` timeline track into emitted document content.
13993
+ *
13994
+ * An `instanceVariant` track cycles a symbol instance through its
13995
+ * definition's variants. SVG has no such concept, so the track has to be
13996
+ * decomposed into concrete per-element animations against the dedicated
13997
+ * per-instance definition that {@link buildSymbolMaterializationPlan}
13998
+ * allocated for it. {@link ./variant-transition-kernels} owns every value in
13999
+ * that decomposition; this module is what places the result in the document.
14000
+ *
14001
+ * It exists because the decomposition used to happen only in the editor, as a
14002
+ * DOM pass over the assembled export. Core emitted the dedicated definition
14003
+ * and nothing inside it, so the CLI, the SDK and the GitHub Action rendered a
14004
+ * variant-animated document frozen on its first variant. The conformance loop
14005
+ * measured that as a 1.95% raster divergence at t=2s.
14006
+ *
14007
+ * Every other authoring-level track is already decomposed by the render plan:
14008
+ * `textPathMorph` into `<animate attributeName="d">` on a generated path def,
14009
+ * gradient stop tracks into `<animate>` on `<stop>`, motion into
14010
+ * `<animateMotion>` + `<mpath>`. `instanceVariant` was the exception.
14011
+ *
14012
+ * The output is four DOM-free channels consumed through
14013
+ * {@link RenderShapeContext} seams that already existed for definition-local
14014
+ * animation, plus the stylesheet and script bodies the two non-SMIL
14015
+ * encodings need. Nothing here locates an element: core BUILDS the symbol,
14016
+ * so every inner element's identity is known at construction time.
14017
+ *
14018
+ * @packageDocumentation
14019
+ */
14020
+
14021
+ /** Which encoding an `instanceVariant` track is decomposed into. */
14022
+ type VariantTransitionTarget = 'smil' | 'css' | 'waapi';
14023
+ /** Inner content and root decoration a transition adds to one definition. */
14024
+ interface VariantTransitionDefinitionContent {
14025
+ readonly children: readonly string[];
14026
+ readonly scopeClass?: string;
14027
+ }
14028
+ interface VariantTransitionRenderPlan {
14029
+ /** Emitted target id → appended content and CSS scope class. */
14030
+ readonly definitionContent: ReadonlyMap<string, VariantTransitionDefinitionContent>;
14031
+ /** Emitted target id → inner shape id → SMIL children. */
14032
+ readonly innerAnimations: ReadonlyMap<string, ReadonlyMap<string, readonly string[]>>;
14033
+ /** Emitted target id → inner shape id → root-open-tag rewrites. */
14034
+ readonly innerRootOverrides: ReadonlyMap<string, ReadonlyMap<string, RenderedRootOverrides>>;
14035
+ /** Gradient definition id → stop index → SMIL children. */
14036
+ readonly gradientStopAnimations: ReadonlyMap<string, ReadonlyMap<number, readonly string[]>>;
14037
+ /** Gradient definition id → SMIL children on the definition root. */
14038
+ readonly gradientRootAnimations: ReadonlyMap<string, readonly string[]>;
14039
+ /** `@keyframes` rules for the CSS encoding. */
14040
+ readonly stylesheet: string | null;
14041
+ /** Self-contained runtime script for the WAAPI encoding. */
14042
+ readonly scriptBody: string | null;
14043
+ /**
14044
+ * Emitted symbol ids a stylesheet or script addresses BY NAME. Definition
14045
+ * deduplication renames collapsed ids, and it rewrites markup channels
14046
+ * only, so an id reached from a script would silently stop resolving.
14047
+ */
14048
+ readonly addressedSymbolIds: ReadonlySet<string>;
14049
+ readonly isEmpty: boolean;
14050
+ }
14051
+ interface VariantTransitionPlanOptions {
14052
+ readonly snapshot: HistorySnapshot;
14053
+ readonly symbols: SymbolMaterializationPlan;
14054
+ readonly target: VariantTransitionTarget;
14055
+ /** The context the owning definition renders its own content with. */
14056
+ readonly shapeContext: RenderShapeContext | undefined;
14057
+ /** Root percentage basis, for the bounds view behind rotation pivots. */
14058
+ readonly parentViewport?: Readonly<SvgViewportSize>;
14059
+ /** Measured text bounds, for inner shapes with no analytic center. */
14060
+ readonly measureShapeTextBounds?: ShapeObjectBoundsHost['measureText'];
14061
+ }
14062
+ /**
14063
+ * Decompose every `instanceVariant` track in a snapshot into emitted content.
14064
+ *
14065
+ * Returns the empty plan when the document has no such track, so a document
14066
+ * without variant animation pays nothing and emits byte-identical output.
14067
+ */
14068
+ declare function planVariantTransitions(options: VariantTransitionPlanOptions): VariantTransitionRenderPlan;
14069
+ /**
14070
+ * The CSS encoding's `@keyframes` rules as a document `<style>` element.
14071
+ *
14072
+ * The DOM encoder inserted this as the root's FIRST child, reasoning that the
14073
+ * keyframes had to be "defined before any element references them". CSS
14074
+ * Animations 1 §3 resolves an `animation-name` against the document's whole
14075
+ * set of `@keyframes` rules regardless of where they appear, so the rules
14076
+ * travel in the ordinary document stylesheet channel instead.
14077
+ */
14078
+ declare function renderVariantTransitionStylesheet(stylesheet: string | null): string;
14079
+ /**
14080
+ * The WAAPI encoding's runtime as a document `<script>` element.
14081
+ *
14082
+ * Routed through the shared inline-body policy: the generated body contains a
14083
+ * bare `<` in its loop condition, so it has to be CDATA-wrapped or the
14084
+ * document is not well-formed XML.
14085
+ */
14086
+ declare function renderVariantTransitionScript(scriptBody: string | null): string;
14087
+
13912
14088
  /**
13913
14089
  * Structured clip/mask group rendering for the headless renderer.
13914
14090
  *
@@ -14098,6 +14274,24 @@ interface RenderPlanOptions {
14098
14274
  * definition shared by untracked sibling instances.
14099
14275
  */
14100
14276
  symbolInstanceInitialVariants?: ReadonlyMap<string, string>;
14277
+ /**
14278
+ * Which encoding an `instanceVariant` track is decomposed into.
14279
+ *
14280
+ * Defaults to `'smil'`, the only encoding that animates a standalone SVG
14281
+ * with no script and no host stylesheet, and the one every raster backend
14282
+ * can seek. `'css'` suits an SVG embedded in HTML; `'waapi'` suits a
14283
+ * consumer that wants to drive the animations from script.
14284
+ */
14285
+ variantTransitionTarget?: VariantTransitionTarget;
14286
+ /**
14287
+ * Measured text bounds, used for the rotation pivot of a variant-animated
14288
+ * inner shape whose center is not analytic (text, containers).
14289
+ *
14290
+ * Distinct from {@link textMeasurementHost}, which measures advance widths
14291
+ * for line breaking. Without it those rotations are dropped and reported as
14292
+ * `unresolved-variant-transition-pivot`.
14293
+ */
14294
+ measureShapeTextBounds?: ShapeObjectBoundsHost['measureText'];
14101
14295
  }
14102
14296
  /** Which root frame attributes to leave off the emitted `<svg>` tag. */
14103
14297
  interface RenderFrameAttributeOmissions {
@@ -14256,14 +14450,6 @@ interface RenderPlan {
14256
14450
  }
14257
14451
  /** The canonical `<defs>` children concatenated in model order. */
14258
14452
  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
14453
  declare function buildRenderPlan(snapshot: HistorySnapshot, options?: RenderPlanOptions): RenderPlan;
14268
14454
  /**
14269
14455
  * Extract SVG path `d` data from a serialized shape for motion-path use.
@@ -18567,4 +18753,4 @@ interface RasterQualityReport {
18567
18753
  */
18568
18754
  declare function compareImages(reference: RasterImage, candidate: RasterImage, opts?: CompareImagesOptions): RasterQualityReport;
18569
18755
 
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 };
18756
+ 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, 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, 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 };