<?php
/**
 * BookiFlex Core
 *
 * @package    BookiFlex
 * @subpackage Core
 * @author     BookiFlex
 * @copyright  Copyright (c) 2025 BookiFlex
 * @license    GPL-2.0-or-later
 *
 * @link       https://bookiflex.com
 */

declare(strict_types=1);

namespace BookiFlex\Core\Contract\Adjustment;


defined( 'ABSPATH' ) || exit;

interface AdjustmentInterface
{
    public function getType(): AdjustmentType;
    public function getMode(): AdjustmentMode;
    public function getStrategy(): AdjustmentStrategy;
    public function getName(): string;
    public function getCode(): string;
    public function getAmount();
    public function getSource(); // Adjustment creator
    public function isRefundable(): bool;
    public function setAdjustable(?AdjustableInterface $adjustable);
}
