<?php

declare(strict_types=1);

namespace App\Framework\Svg\Elements;

use App\Framework\Svg\ValueObjects\Transform\Transform;

/**
 * Base interface for all SVG elements
 */
interface SvgElement
{
    /**
     * Render element to SVG string
     */
    public function toSvg(): string;

    /**
     * Get element type (rect, circle, text, etc.)
     */
    public function getElementType(): string;

    /**
     * Get all attributes as associative array
     */
    public function getAttributes(): array;

    /**
     * Check if element has transform
     */
    public function hasTransform(): bool;

    /**
     * Get transform if present
     */
    public function getTransform(): ?Transform;
}
