<?php

declare (strict_types=1);
namespace idoit\Module\SyneticsJdisc\Graphql\Schema\Model;

use Axtiva\FlexibleGraphql\Generator\Exception\UnknownEnumValue;
use Axtiva\FlexibleGraphql\Type\EnumInterface;

/**
 * This code is @generated by axtiva/flexible-graphql-php
 * and will be regenerated. Do not edit it manually
 * PHP representation of graphql enum BusType
 * The BUS type for a connected physical disk
 */
final class BusTypeEnum implements EnumInterface
{
    public const Unknown = 'Unknown';
    public const SCSI = 'SCSI';
    public const ATAPI = 'ATAPI';
    public const ATA = 'ATA';
    public const IEEE1394 = 'IEEE1394';
    public const SSA = 'SSA';
    public const FibreChannel = 'FibreChannel';
    public const USB = 'USB';
    public const RAID = 'RAID';
    public const ISCSI = 'ISCSI';
    public const SAS = 'SAS';
    public const SATA = 'SATA';
    public const SD = 'SD';
    public const MMC = 'MMC';
    public const FileBackedVirtual = 'FileBackedVirtual';
    public const StorageSpaces = 'StorageSpaces';
    public const NVMe = 'NVMe';
    public string $value;
    private static array $map = [
        self::Unknown => true,
        self::SCSI => true,
        self::ATAPI => true,
        self::ATA => true,
        self::IEEE1394 => true,
        self::SSA => true,
        self::FibreChannel => true,
        self::USB => true,
        self::RAID => true,
        self::ISCSI => true,
        self::SAS => true,
        self::SATA => true,
        self::SD => true,
        self::MMC => true,
        self::FileBackedVirtual => true,
        self::StorageSpaces => true,
        self::NVMe => true,
    ];

    public function __construct($value)
    {
        if (!isset(self::$map[$value])) {
            throw new UnknownEnumValue(__CLASS__, $value);
        }
        $this->value = $value;
    }

    public function __toString(): string
    {
        return $this->value;
    }
}