<?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 LicenseType
 * The License Types
 */
final class LicenseTypeEnum implements EnumInterface
{
    public const Evaluation = 'Evaluation';
    public const Standalone = 'Standalone';
    public const Network = 'Network';
    public const MultiSeatStandalone = 'MultiSeatStandalone';
    public const Retail = 'Retail';
    public const MAK = 'MAK';
    public const KMS = 'KMS';
    public const Grace = 'Grace';
    public const Subscription = 'Subscription';
    public const OEM = 'OEM';
    public const Volume = 'Volume';
    public const OpenSource = 'OpenSource';
    public const PublicDomain = 'PublicDomain';
    public const KMS_B = 'KMS_B';
    public const KMS_C = 'KMS_C';
    public const MAK_B = 'MAK_B';
    public const OEM_SLP = 'OEM_SLP';
    public const OEM_NSLP = 'OEM_NSLP';
    public const Licensed = 'Licensed';
    public const UNWARRANTED = 'UNWARRANTED';
    public const NOT_REGISTERED = 'NOT_REGISTERED';
    public const DEVELOPER = 'DEVELOPER';
    public const RESTRICTED = 'RESTRICTED';
    public const TRIAL = 'TRIAL';
    public const CPU_OPTION = 'CPU_OPTION';
    public const UNLICENSED = 'UNLICENSED';
    public const AUTHORIZED = 'AUTHORIZED';
    public const AUTHORIZED_SINGLE_INSTALL = 'AUTHORIZED_SINGLE_INSTALL';
    public const TERABYTE = 'TERABYTE';
    public const USER = 'USER';
    public const MANAGED = 'MANAGED';
    public const SERVER = 'SERVER';
    public const FIXED = 'FIXED';
    public const MSSQL_ENTERPRISE = 'MSSQL_ENTERPRISE';
    public const MSSQL_STANDARD = 'MSSQL_STANDARD';
    public const MSSQL_WEB = 'MSSQL_WEB';
    public const MSSQL_DEVELOPER = 'MSSQL_DEVELOPER';
    public const MSSQL_EXPRESS = 'MSSQL_EXPRESS';
    public const PER_USER = 'PER_USER';
    public const PER_DEVICE = 'PER_DEVICE';
    public const FreeForNonCommercial = 'FreeForNonCommercial';
    public const Perpetual = 'Perpetual';
    public const Extension = 'Extension';
    public const EvaluationSubscription = 'EvaluationSubscription';
    public const ExtensionSubscription = 'ExtensionSubscription';
    public const EvaluationRightToUse = 'EvaluationRightToUse';
    public const RightToUse = 'RightToUse';
    public const PermanentRightToUse = 'PermanentRightToUse';
    public string $value;
    private static array $map = [
        self::Evaluation => true,
        self::Standalone => true,
        self::Network => true,
        self::MultiSeatStandalone => true,
        self::Retail => true,
        self::MAK => true,
        self::KMS => true,
        self::Grace => true,
        self::Subscription => true,
        self::OEM => true,
        self::Volume => true,
        self::OpenSource => true,
        self::PublicDomain => true,
        self::KMS_B => true,
        self::KMS_C => true,
        self::MAK_B => true,
        self::OEM_SLP => true,
        self::OEM_NSLP => true,
        self::Licensed => true,
        self::UNWARRANTED => true,
        self::NOT_REGISTERED => true,
        self::DEVELOPER => true,
        self::RESTRICTED => true,
        self::TRIAL => true,
        self::CPU_OPTION => true,
        self::UNLICENSED => true,
        self::AUTHORIZED => true,
        self::AUTHORIZED_SINGLE_INSTALL => true,
        self::TERABYTE => true,
        self::USER => true,
        self::MANAGED => true,
        self::SERVER => true,
        self::FIXED => true,
        self::MSSQL_ENTERPRISE => true,
        self::MSSQL_STANDARD => true,
        self::MSSQL_WEB => true,
        self::MSSQL_DEVELOPER => true,
        self::MSSQL_EXPRESS => true,
        self::PER_USER => true,
        self::PER_DEVICE => true,
        self::FreeForNonCommercial => true,
        self::Perpetual => true,
        self::Extension => true,
        self::EvaluationSubscription => true,
        self::ExtensionSubscription => true,
        self::EvaluationRightToUse => true,
        self::RightToUse => true,
        self::PermanentRightToUse => 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;
    }
}