import { BaseXform } from "../base-xform.js"; /** Fill specification for a drawing shape. */ export interface ShapeFill { /** Solid fill colour as a hex RGB string (e.g. "FF0000"). Omit for no fill. */ color?: string; } /** Line (outline) specification for a drawing shape. */ export interface ShapeLine { /** Line colour as a hex RGB string (e.g. "000000"). */ color?: string; /** Line width in points. */ width?: number; } /** * Model for a user-visible drawing shape (``). * * Distinct from the form-control shape rendered by `SpXform` — this one is * visible, carries a configurable preset geometry, solid fill, outline and an * optional text label, and is NOT wrapped in an `a14` AlternateContent block. */ export interface ShapeRenderModel { /** Marks this as a user shape so the anchor routes to ShapeXform. */ kind: "userShape"; /** Unique drawing id. */ cNvPrId: number; /** Display name (e.g. "Rectangle 1"). */ name: string; /** Preset geometry name (e.g. "rect", "ellipse", "line", "roundRect"). */ shapeType: string; fill?: ShapeFill; line?: ShapeLine; /** Optional text label centred in the shape. */ text?: string; } /** * Renders a user-visible drawing shape. Geometry/position is governed by the * enclosing anchor (`xfrm` is written as zero, matching how Excel anchors a * shape to a cell range), while preset geometry, fill, outline and text are * taken from the model. Write-only: shapes are not parsed back on read (the * same limitation that already applies to all non-chart drawing content). */ declare class ShapeXform extends BaseXform { model: ShapeRenderModel; get tag(): string; render(xmlStream: any, model: ShapeRenderModel): void; } export { ShapeXform };