<?php

declare (strict_types=1);
namespace DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\Service\Ucp\Checkout;

use WC_Order;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\Service\Ucp\Checkout\Payment\PaymentHandlerInterface;
use DropshippingExportFreeVendor\WPDesk\Library\DropshippingExport\Service\Ucp\Checkout\Payment\PaymentResult;
/**
 * Interface for executing UCP payments with proper orchestration.
 */
interface CheckoutPaymentExecutorInterface
{
    /**
     * Process the payment for the given order using the provided instrument data.
     *
     * This handles session locking, status updates, and session marking.
     *
     * @param WC_Order                $order      The WooCommerce order.
     * @param PaymentHandlerInterface $processor  The resolved payment processor.
     * @param array<string, mixed>    $instrument The UCP payment instrument data.
     *
     * @return PaymentResult
     */
    public function execute_payment(WC_Order $order, PaymentHandlerInterface $processor, array $instrument): PaymentResult;
}
