<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\InventoryReservationsApi\Model;

use Magento\InventoryReservationsApi\Model\ReservationInterface;

/**
 * Domain service used to append Reservations to keep track of quantity deductions before the related SourceItems
 * are updated.
 *
 * Some use cases are:
 *
 * - an Order is placed, completed or canceled
 * - an Order is split or partially refunded
 * - an RMA is placed or canceled
 *
 * @api
 */
interface AppendReservationsInterface
{
    /**
     * Append reservations
     *
     * @param ReservationInterface[] $reservations
     * @return void
     * @throws \Magento\Framework\Exception\InputException
     * @throws \Magento\Framework\Exception\CouldNotSaveException
     */
    public function execute(array $reservations): void;
}