<?php

declare(strict_types=1);

namespace Plugin\tnt_stabila_shop\src\Interfaces;

/**
 * Interface DataObjectInterface
 * @package JTL\DataObjects
 */
interface DomainObjectInterface
{
    /**
     * Will return an array containing Keys and values of protected and public properties.
     * Shall use getColumnMapping() if $tableColumns = true
     *
     * @param bool $deep
     * @param bool $serialize
     * @return array<string, mixed>
     */
    public function toArray(bool $deep = false, bool $serialize = true): array;

    /**
     * Creates and returns object from data provided in toArray()
     * @param bool $deep
     * @return object
     */
    public function toObject(bool $deep = false): object;
}
