<?php

declare (strict_types=1);
namespace idoit\Module\JDisc\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 AttributeType
 * The custom attribute type
 */
final class AttributeTypeEnum implements EnumInterface
{
    public const Integer = 'Integer';
    public const Long = 'Long';
    public const SingleLineText = 'SingleLineText';
    public const MultilineText = 'MultilineText';
    public const Datetime = 'Datetime';
    public const Date = 'Date';
    public const Time = 'Time';
    public const Folder = 'Folder';
    public const Float = 'Float';
    public const Enum = 'Enum';
    public const Currency = 'Currency';
    public const Boolean = 'Boolean';
    public const Document = 'Document';
    public const Table = 'Table';
    public const Group = 'Group';
    public const Any = 'Any';
    public const SnmpGroup = 'SnmpGroup';
    public const SnmpTable = 'SnmpTable';
    public const WMIQuery = 'WMIQuery';
    public string $value;
    private static array $map = [
        self::Integer => true,
        self::Long => true,
        self::SingleLineText => true,
        self::MultilineText => true,
        self::Datetime => true,
        self::Date => true,
        self::Time => true,
        self::Folder => true,
        self::Float => true,
        self::Enum => true,
        self::Currency => true,
        self::Boolean => true,
        self::Document => true,
        self::Table => true,
        self::Group => true,
        self::Any => true,
        self::SnmpGroup => true,
        self::SnmpTable => true,
        self::WMIQuery => 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;
    }
}