///
/// PTError.swift
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///

/**
 * Represents the JS enum `PTError`, backed by a C++ enum.
 */
public typealias PTError = margelo.nitro.espprovtoolkit.PTError

public extension PTError {
  /**
   * Get a PTError for the given String value, or
   * return `nil` if the given value was invalid/unknown.
   */
  init?(fromString string: String) {
    switch string {
      case "WIFI_SCAN_EMPTY_CONFIG_DATA":
        self = .wifiScanEmptyConfigData
      case "WIFI_SCAN_EMPTY_RESULT_COUNT":
        self = .wifiScanEmptyResultCount
      case "WIFI_SCAN_REQUEST_ERROR":
        self = .wifiScanRequestError
      case "SESSION_INIT_ERROR":
        self = .sessionInitError
      case "SESSION_NOT_ESTABLISHED":
        self = .sessionNotEstablished
      case "SESSION_SEND_DATA_ERROR":
        self = .sessionSendDataError
      case "SOFTAP_CONNECTION_FAILURE":
        self = .softapConnectionFailure
      case "SESSION_SECURITY_MISMATCH":
        self = .sessionSecurityMismatch
      case "SESSION_VERSION_INFO_ERROR":
        self = .sessionVersionInfoError
      case "BLE_FAILED_TO_CONNECT":
        self = .bleFailedToConnect
      case "ENCRYPTION_ERROR":
        self = .encryptionError
      case "NO_POP":
        self = .noPop
      case "NO_USERNAME":
        self = .noUsername
      case "CAMERA_NOT_AVAILABLE":
        self = .cameraNotAvailable
      case "CAMERA_ACCESS_DENIED":
        self = .cameraAccessDenied
      case "AV_CAPTURE_DEVICE_INPUT_ERROR":
        self = .avCaptureDeviceInputError
      case "VIDEO_INPUT_ERROR":
        self = .videoInputError
      case "VIDEO_OUTPUT_ERROR":
        self = .videoOutputError
      case "INVALID_QR_CODE":
        self = .invalidQrCode
      case "BLE_SEARCH_ERROR":
        self = .bleSearchError
      case "ESP_DEVICE_NOT_FOUND":
        self = .espDeviceNotFound
      case "AP_SEARCH_NOT_SUPPORTED":
        self = .apSearchNotSupported
      case "PROV_SESSION_ERROR":
        self = .provSessionError
      case "PROV_CONFIGURATION_ERROR":
        self = .provConfigurationError
      case "PROV_WIFI_STATUS_ERROR":
        self = .provWifiStatusError
      case "PROV_WIFI_STATUS_DISCONNECTED":
        self = .provWifiStatusDisconnected
      case "PROV_WIFI_STATUS_AUTH_ERROR":
        self = .provWifiStatusAuthError
      case "PROV_WIFI_STATUS_NETWORK_NOT_FOUND":
        self = .provWifiStatusNetworkNotFound
      case "PROV_WIFI_STATUS_UNKNOWN_ERROR":
        self = .provWifiStatusUnknownError
      case "PROV_TIMED_OUT_ERROR":
        self = .provTimedOutError
      case "PROV_UNKNOWN_ERROR":
        self = .provUnknownError
      case "RUNTIME_BAD_CLOSURE_ARGS":
        self = .runtimeBadClosureArgs
      case "RUNTIME_DOES_NOT_EXIST_LOCALLY":
        self = .runtimeDoesNotExistLocally
      case "RUNTIME_BAD_BASE64_DATA":
        self = .runtimeBadBase64Data
      case "RUNTIME_UNKNOWN_ERROR":
        self = .runtimeUnknownError
      case "ESP_NATIVE_UNKNOWN_ERROR":
        self = .espNativeUnknownError
      case "ESP_INSUFFICIENT_PERMISSIONS":
        self = .espInsufficientPermissions
      case "BLE_ADAPTER_NOT_AVAILABLE":
        self = .bleAdapterNotAvailable
      default:
        return nil
    }
  }

  /**
   * Get the String value this PTError represents.
   */
  var stringValue: String {
    switch self {
      case .wifiScanEmptyConfigData:
        return "WIFI_SCAN_EMPTY_CONFIG_DATA"
      case .wifiScanEmptyResultCount:
        return "WIFI_SCAN_EMPTY_RESULT_COUNT"
      case .wifiScanRequestError:
        return "WIFI_SCAN_REQUEST_ERROR"
      case .sessionInitError:
        return "SESSION_INIT_ERROR"
      case .sessionNotEstablished:
        return "SESSION_NOT_ESTABLISHED"
      case .sessionSendDataError:
        return "SESSION_SEND_DATA_ERROR"
      case .softapConnectionFailure:
        return "SOFTAP_CONNECTION_FAILURE"
      case .sessionSecurityMismatch:
        return "SESSION_SECURITY_MISMATCH"
      case .sessionVersionInfoError:
        return "SESSION_VERSION_INFO_ERROR"
      case .bleFailedToConnect:
        return "BLE_FAILED_TO_CONNECT"
      case .encryptionError:
        return "ENCRYPTION_ERROR"
      case .noPop:
        return "NO_POP"
      case .noUsername:
        return "NO_USERNAME"
      case .cameraNotAvailable:
        return "CAMERA_NOT_AVAILABLE"
      case .cameraAccessDenied:
        return "CAMERA_ACCESS_DENIED"
      case .avCaptureDeviceInputError:
        return "AV_CAPTURE_DEVICE_INPUT_ERROR"
      case .videoInputError:
        return "VIDEO_INPUT_ERROR"
      case .videoOutputError:
        return "VIDEO_OUTPUT_ERROR"
      case .invalidQrCode:
        return "INVALID_QR_CODE"
      case .bleSearchError:
        return "BLE_SEARCH_ERROR"
      case .espDeviceNotFound:
        return "ESP_DEVICE_NOT_FOUND"
      case .apSearchNotSupported:
        return "AP_SEARCH_NOT_SUPPORTED"
      case .provSessionError:
        return "PROV_SESSION_ERROR"
      case .provConfigurationError:
        return "PROV_CONFIGURATION_ERROR"
      case .provWifiStatusError:
        return "PROV_WIFI_STATUS_ERROR"
      case .provWifiStatusDisconnected:
        return "PROV_WIFI_STATUS_DISCONNECTED"
      case .provWifiStatusAuthError:
        return "PROV_WIFI_STATUS_AUTH_ERROR"
      case .provWifiStatusNetworkNotFound:
        return "PROV_WIFI_STATUS_NETWORK_NOT_FOUND"
      case .provWifiStatusUnknownError:
        return "PROV_WIFI_STATUS_UNKNOWN_ERROR"
      case .provTimedOutError:
        return "PROV_TIMED_OUT_ERROR"
      case .provUnknownError:
        return "PROV_UNKNOWN_ERROR"
      case .runtimeBadClosureArgs:
        return "RUNTIME_BAD_CLOSURE_ARGS"
      case .runtimeDoesNotExistLocally:
        return "RUNTIME_DOES_NOT_EXIST_LOCALLY"
      case .runtimeBadBase64Data:
        return "RUNTIME_BAD_BASE64_DATA"
      case .runtimeUnknownError:
        return "RUNTIME_UNKNOWN_ERROR"
      case .espNativeUnknownError:
        return "ESP_NATIVE_UNKNOWN_ERROR"
      case .espInsufficientPermissions:
        return "ESP_INSUFFICIENT_PERMISSIONS"
      case .bleAdapterNotAvailable:
        return "BLE_ADAPTER_NOT_AVAILABLE"
    }
  }
}
