<?php

namespace Alsendo\AlsendoWrapper;

use Alsendo\AlsendoWrapper\Model\Contact;
use Alsendo\AlsendoWrapper\Model\Order\OrderRequest;
use Alsendo\AlsendoWrapper\Model\Order\OrderResponse;
use Alsendo\AlsendoWrapper\Model\Order\SendOrderResponse;
use Alsendo\AlsendoWrapper\Model\Order\Valuation\OrderValuationResponse;
use Alsendo\AlsendoWrapper\Model\Service\ServiceStructure;
use Alsendo\AlsendoWrapper\Model\TurnIn\TurnIn;
use Alsendo\AlsendoWrapper\Model\WayBill\WayBill;

interface ApiClientInterface
{
    public function getServiceStructure(): ServiceStructure;

    public function getOrderValuation(OrderRequest $order): OrderValuationResponse;

    public function sendOrder(OrderRequest $order): SendOrderResponse;

    public function getOrder(string $orderId): OrderResponse;

    /**
     * @param string[] $orderIds
     * @return OrderResponse[]
     */
    public function getOrders(array $orderIds): array;

    public function getWayBill(string $orderId): WayBill;

    public function cancelOrder(string $orderId): bool;

    /**
     * @param string[] $orderIds
     */
    public function getTurnInList(array $orderIds): TurnIn;

    /**
     * @return Contact[]
     */
    public function getContactList(): array;
}