import { Schema as S } from 'effect'; /** A 2D point in canvas-local coordinates. */ export declare const Point: S.Struct<{ readonly x: S.Number; readonly y: S.Number; }>; /** A 2D point in canvas-local coordinates. */ export type Point = typeof Point.Type; /** Move the path cursor to a point without drawing. */ export declare const MoveTo: import("../schema/index.js").CallableTaggedStruct<"MoveTo", { x: S.Number; y: S.Number; }>; /** Move the path cursor to a point without drawing. */ export type MoveTo = typeof MoveTo.Type; /** Draw a straight line from the cursor to a point. */ export declare const LineTo: import("../schema/index.js").CallableTaggedStruct<"LineTo", { x: S.Number; y: S.Number; }>; /** Draw a straight line from the cursor to a point. */ export type LineTo = typeof LineTo.Type; /** Draw a quadratic Bezier curve from the cursor through a control point to an end point. */ export declare const QuadTo: import("../schema/index.js").CallableTaggedStruct<"QuadTo", { cpx: S.Number; cpy: S.Number; x: S.Number; y: S.Number; }>; /** Draw a quadratic Bezier curve from the cursor through a control point to an end point. */ export type QuadTo = typeof QuadTo.Type; /** Draw a cubic Bezier curve from the cursor through two control points to an end point. */ export declare const BezierTo: import("../schema/index.js").CallableTaggedStruct<"BezierTo", { cp1x: S.Number; cp1y: S.Number; cp2x: S.Number; cp2y: S.Number; x: S.Number; y: S.Number; }>; /** Draw a cubic Bezier curve from the cursor through two control points to an end point. */ export type BezierTo = typeof BezierTo.Type; /** Close the current path by drawing a line back to its starting point. */ export declare const Close: import("../schema/index.js").CallableTaggedStruct<"Close", {}>; /** Close the current path by drawing a line back to its starting point. */ export type Close = typeof Close.Type; /** A single drawing instruction within a `Path` shape. */ export declare const PathInstruction: S.Union, import("../schema/index.js").CallableTaggedStruct<"LineTo", { x: S.Number; y: S.Number; }>, import("../schema/index.js").CallableTaggedStruct<"QuadTo", { cpx: S.Number; cpy: S.Number; x: S.Number; y: S.Number; }>, import("../schema/index.js").CallableTaggedStruct<"BezierTo", { cp1x: S.Number; cp1y: S.Number; cp2x: S.Number; cp2y: S.Number; x: S.Number; y: S.Number; }>, import("../schema/index.js").CallableTaggedStruct<"Close", {}>]>; /** A single drawing instruction within a `Path` shape. */ export type PathInstruction = typeof PathInstruction.Type; /** Stroke cap style: how the ends of an open stroked subpath are rendered. */ export declare const LineCap: S.Literals; /** Stroke cap style: how the ends of an open stroked subpath are rendered. */ export type LineCap = typeof LineCap.Type; /** Stroke join style: how two connected stroked segments meet. */ export declare const LineJoin: S.Literals; /** Stroke join style: how two connected stroked segments meet. */ export type LineJoin = typeof LineJoin.Type; /** Horizontal alignment of a `Text` shape relative to its anchor x coordinate. */ export declare const TextAlign: S.Literals; /** Horizontal alignment of a `Text` shape relative to its anchor x coordinate. */ export type TextAlign = typeof TextAlign.Type; /** Vertical alignment of a `Text` shape relative to its anchor y coordinate. */ export declare const TextBaseline: S.Literals; /** Vertical alignment of a `Text` shape relative to its anchor y coordinate. */ export type TextBaseline = typeof TextBaseline.Type; /** An axis-aligned rectangle. */ export declare const Rect: import("../schema/index.js").CallableTaggedStruct<"Rect", { x: S.Number; y: S.Number; width: S.Number; height: S.Number; fill: S.optional; stroke: S.optional; lineWidth: S.optional; }>; /** An axis-aligned rectangle. */ export type Rect = typeof Rect.Type; /** A filled or stroked circle. */ export declare const Circle: import("../schema/index.js").CallableTaggedStruct<"Circle", { x: S.Number; y: S.Number; radius: S.Number; fill: S.optional; stroke: S.optional; lineWidth: S.optional; }>; /** A filled or stroked circle. */ export type Circle = typeof Circle.Type; /** A path built from a sequence of `PathInstruction`s. */ export declare const Path: import("../schema/index.js").CallableTaggedStruct<"Path", { instructions: S.$Array, import("../schema/index.js").CallableTaggedStruct<"LineTo", { x: S.Number; y: S.Number; }>, import("../schema/index.js").CallableTaggedStruct<"QuadTo", { cpx: S.Number; cpy: S.Number; x: S.Number; y: S.Number; }>, import("../schema/index.js").CallableTaggedStruct<"BezierTo", { cp1x: S.Number; cp1y: S.Number; cp2x: S.Number; cp2y: S.Number; x: S.Number; y: S.Number; }>, import("../schema/index.js").CallableTaggedStruct<"Close", {}>]>>; fill: S.optional; stroke: S.optional; lineWidth: S.optional; lineCap: S.optional>; lineJoin: S.optional>; }>; /** A path built from a sequence of `PathInstruction`s. */ export type Path = typeof Path.Type; /** A single line of text drawn with a font, fill, and optional stroke. */ export declare const Text: import("../schema/index.js").CallableTaggedStruct<"Text", { x: S.Number; y: S.Number; content: S.String; font: S.optional; fill: S.optional; stroke: S.optional; lineWidth: S.optional; align: S.optional>; baseline: S.optional>; }>; /** A single line of text drawn with a font, fill, and optional stroke. */ export type Text = typeof Text.Type; /** * A scene-graph node that applies a 2D transform and global alpha to a list of * child shapes. Transforms compose multiplicatively when groups are nested. * * Defined via the `interface` form so the recursion (`shapes: ReadonlyArray` * where `Shape` includes `Group` itself) resolves under TypeScript's lazy * interface evaluation. The matching runtime Schema uses `S.suspend`. */ export interface Group extends Readonly<{ readonly _tag: 'Group'; readonly shapes: ReadonlyArray; readonly translate?: Point | undefined; readonly rotate?: number | undefined; readonly scale?: Point | undefined; readonly opacity?: number | undefined; }> { } /** * A drawable scene-graph node. Composing `Group` recursively builds a tree; * the painter walks the tree depth-first, applying transforms via * `ctx.save` / `ctx.restore`. */ export type Shape = typeof Rect.Type | typeof Circle.Type | typeof Path.Type | typeof Text.Type | Group; /** Construct a `Group` shape that wraps its children in a transformed scope. */ export declare const Group: import("../schema/index.js").CallableTaggedStruct<"Group", { shapes: S.$Array>; translate: S.optional>; rotate: S.optional; scale: S.optional>; opacity: S.optional; }>; //# sourceMappingURL=shape.d.ts.map