<?php

namespace Opencart\Extension\Alsendo\DTO\Entity;

require_once(DIR_EXTENSION . 'alsendo/src/DTO/Entity/OrderDetailsEntity.php');
require_once(DIR_EXTENSION . 'alsendo/src/DTO/Entity/AbstractOrderDetailsSenderEntity.php');
require_once(DIR_EXTENSION . 'alsendo/src/DTO/Entity/AbstractOrderDetailsShippingAddressEntity.php');
require_once(DIR_EXTENSION . 'alsendo/src/DTO/Entity/AbstractOrderDetailsPackageDetailsEntity.php');
require_once(DIR_EXTENSION . 'alsendo/src/DTO/Entity/AbstractOrderDetailsPackageEntity.php');
require_once(DIR_EXTENSION . 'alsendo/src/DTO/Entity/AbstractOrderDetailsShipmentEntity.php');

use Opencart\Extension\Alsendo\DTO\Entity\AbstractOrderDetailsPackageEntity;
use Opencart\Extension\Alsendo\DTO\Entity\AbstractOrderDetailsPackageDetailsEntity;
use Opencart\Extension\Alsendo\DTO\Entity\AbstractOrderDetailsSenderEntity;
use Opencart\Extension\Alsendo\DTO\Entity\AbstractOrderDetailsShipmentEntity;
use Opencart\Extension\Alsendo\DTO\Entity\AbstractOrderDetailsShippingAddressEntity;

interface OrderDetailsEntityFactoryInterface
{
    public function createOrderDetailsFromArray(array $data): OrderDetailsEntity;

    public function createSenderFromArray(array $data): AbstractOrderDetailsSenderEntity;

    public function createShippingAddressFromArray(array $data): AbstractOrderDetailsShippingAddressEntity;

    public function createPackageDetailsFromArray(array $data, string $currencyCode = 'PLN'): AbstractOrderDetailsPackageDetailsEntity;

    public function createPackageFromArray(array $data): AbstractOrderDetailsPackageEntity;

    public function createShipmentFromArray(array $data): AbstractOrderDetailsShipmentEntity;
}
