<?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\Payment;

use BookiFlex\Core\Model\AbstractStatus;

defined( 'ABSPATH' ) || exit;

class PaymentStatus extends AbstractStatus
{
    public const WAITING    = 'WAITING';
    public const AUTHORIZED = 'AUTHORIZED';
    public const PAID       = 'PAID';
    public const CANCELLED  = 'CANCELLED';
    public const EXPIRED    = 'EXPIRED';

    protected static array $validTransitions = [
        self::WAITING    => [self::AUTHORIZED, self::PAID, self::CANCELLED, self::EXPIRED],
        self::AUTHORIZED => [self::PAID, self::CANCELLED, self::EXPIRED],
        self::EXPIRED    => [self::WAITING, self::CANCELLED],
        self::PAID       => [],
        self::CANCELLED  => [],
    ];
}
