* SPDX-License-Identifier: AGPL-3.0-or-later */ namespace KTXF\Mail\Entity; use KTXF\Mail\Object\MessagePropertiesMutableInterface; use KTXF\Resource\Provider\Node\NodeMutableAbstract; use KTXF\Resource\Provider\Node\NodePropertiesMutableInterface; /** * Abstract Mail Entity Mutable Class * * Provides common implementation for mutable mail entities * * @since 2025.05.01 */ abstract class EntityMutableAbstract extends NodeMutableAbstract implements EntityMutableInterface { public const JSON_TYPE = EntityMutableInterface::JSON_TYPE; protected MessagePropertiesMutableInterface $properties; /** * @inheritDoc */ public function getProperties(): MessagePropertiesMutableInterface { return $this->properties; } /** * @inheritDoc */ public function setProperties(NodePropertiesMutableInterface $value): static { if (!$value instanceof MessagePropertiesMutableInterface) { throw new \InvalidArgumentException('Properties must implement MessagePropertiesMutableInterface'); } $this->properties = $value; return $this; } }