<?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 DiscoveryProtocol
 * The discovery protocols
 */
final class DiscoveryProtocolEnum implements EnumInterface
{
    public const SNMPv1 = 'SNMPv1';
    public const SNMPv2 = 'SNMPv2';
    public const SNMPv3 = 'SNMPv3';
    public const WMI = 'WMI';
    public const Telnet = 'Telnet';
    public const SSH = 'SSH';
    public const TelnetBannerDetection = 'TelnetBannerDetection';
    public const SMBAnonymous = 'SMBAnonymous';
    public const SMB = 'SMB';
    public const HTTP = 'HTTP';
    public const WBEM = 'WBEM';
    public const RemoteLogin = 'RemoteLogin';
    public const RemoteLoginAdmin = 'RemoteLoginAdmin';
    public const NetBIOSAnonymous = 'NetBIOSAnonymous';
    public const VMWareVIM = 'VMWareVIM';
    public const DNS = 'DNS';
    public const HTTPS = 'HTTPS';
    public const NetAppOntapAPI = 'NetAppOntapAPI';
    public const S7 = 'S7';
    public const CDP = 'CDP';
    public const LLDP = 'LLDP';
    public const RemoteRegistry = 'RemoteRegistry';
    public const SNMP = 'SNMP';
    public const UPNP = 'UPNP';
    public const MDNS = 'MDNS';
    public string $value;
    private static array $map = [
        self::SNMPv1 => true,
        self::SNMPv2 => true,
        self::SNMPv3 => true,
        self::WMI => true,
        self::Telnet => true,
        self::SSH => true,
        self::TelnetBannerDetection => true,
        self::SMBAnonymous => true,
        self::SMB => true,
        self::HTTP => true,
        self::WBEM => true,
        self::RemoteLogin => true,
        self::RemoteLoginAdmin => true,
        self::NetBIOSAnonymous => true,
        self::VMWareVIM => true,
        self::DNS => true,
        self::HTTPS => true,
        self::NetAppOntapAPI => true,
        self::S7 => true,
        self::CDP => true,
        self::LLDP => true,
        self::RemoteRegistry => true,
        self::SNMP => true,
        self::UPNP => true,
        self::MDNS => 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;
    }
}