import { EventEmitter } from './core/EventEmitter'; import type { FillStyle, NodeOptions, Shadow, StrokeStyle, TransformState, AnimationOptions, SceneJSON } from './types'; import { Matrix2D } from './utils'; import { AnimationEngine } from './animation/Animation'; import type { App } from './App'; export declare abstract class Node extends EventEmitter { readonly id: string; name: string; type: string; x: number; y: number; rotation: number; scaleX: number; scaleY: number; skewX: number; skewY: number; opacity: number; visible: boolean; zIndex: number; listening: boolean; draggable: boolean; dropTarget: boolean; dragPayload: unknown; focusable: boolean; tabIndex: number; role?: string; ariaChecked?: boolean; ariaValueNow?: number; ariaValueMin?: number; ariaValueMax?: number; ariaLive?: 'off' | 'polite' | 'assertive'; fill: FillStyle; stroke: StrokeStyle; strokeWidth: number; lineCap: CanvasLineCap; lineJoin: CanvasLineJoin; dash: number[]; dashOffset: number; shadow: Shadow | null; clip: boolean; mask: Node | null; metadata: Record; parent: Node | null; protected _dirty: boolean; protected _worldMatrix: Matrix2D; protected _localMatrix: Matrix2D; constructor(type: string, options?: NodeOptions); protected applyOptions(options: NodeOptions): void; get scale(): number; set scale(value: number); /** Position helpers */ position(x: number, y: number): this; move(x: number, y: number): this; translate(dx: number, dy: number): this; rotate(degrees: number): this; setOpacity(value: number): this; hide(): this; show(): this; attr(key: string, value?: unknown): unknown; animate(options: AnimationOptions): ReturnType; markDirty(): void; isDirty(): boolean; clearDirty(): void; getLocalMatrix(): Matrix2D; getWorldMatrix(): Matrix2D; getTransformState(): TransformState; getApp(): App | null; /** Hit test in local coordinates */ abstract containsPoint(localX: number, localY: number): boolean; /** Bounding box in local coordinates */ abstract getBounds(): { x: number; y: number; width: number; height: number; }; /** Render hook for renderers */ abstract draw(ctx: unknown): void; toJSON(): SceneJSON; protected getShapeProps(): Record; destroy(): void; }