//
// © 2018-2020 Qualcomm Technologies, Inc. and/or its subsidiaries. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef void(^IoTCompletionHandler)(BOOL success, NSError * _Nullable error);

// Enums

{% for schema_data in schema_objects %}
{% for prop, prop_data in schema_data.props.items() %}
{% if 'enum' in prop_data %}
typedef NS_ENUM(NSInteger, {{schema_data.name|enum_name_syntax(prop)}}) {
{% for value in prop_data['enum'] %}
    {{schema_data.name|enum_name_syntax(prop)}}{{value|class_name_syntax}},
{% endfor %}
};

{% endif %}
{% endfor %}
{% endfor %}

typedef NS_ENUM(NSInteger,IoTHomeTheaterChannel) {
    IoTHomeTheaterChannelNone = 0,
    IoTHomeTheaterChannelSubwoofer,
    IoTHomeTheaterChannelLeft,
    IoTHomeTheaterChannelRight,
    IoTHomeTheaterChannelCenter,
    IoTHomeTheaterChannelLeftSurround,
    IoTHomeTheaterChannelRightSurround,
    IoTHomeTheaterChannelLeftRearSurround,
    IoTHomeTheaterChannelRightRearSurround,
    IoTHomeTheaterChannelLeftUpfiringSurround,
    IoTHomeTheaterChannelRightUpfiringSurround,
    IoTHomeTheaterChannelLeftRearUpfiringSurround,
    IoTHomeTheaterChannelRightRearUpfiringSurround,
};

typedef NS_ENUM(NSInteger, IoTError) {
    IoTErrorNone = 0,
    IoTErrorUnknown,
    IoTErrorRequest,
    IoTErrorNetwork,
    IoTErrorFormat,
    IoTErrorStream,
    IoTErrorAuthentication,
    IoTErrorMediaRulesEngine,
    IoTErrorInvalidObject,
 //   IoTErrorUnInterruptiblePlayer,
 //   IoTErrorVolumeDisabledPlayer,
    IoTErrorAuthenticationCancelled,
    IoTErrorNotSupported,
    IoTErrorPartyModeDisabledPlayer
};

typedef NS_ENUM(NSInteger, IoTNetworkInterface) {
    IoTNetworkInterfaceNone = 0,
    IoTNetworkInterfaceWiFi,
    IoTNetworkInterfaceEthernet,
};

typedef NS_ENUM(NSInteger, IoTUpdateStatus) {
    IoTUpdateStatusNone = 0,
    IoTUpdateStatusUpdating,
    IoTUpdateStatusNotNeeded,
    IoTUpdateStatusFailed,
    IoTUpdateStatusLowBattery,
    IoTUpdateStatusSuccessful,
};

typedef NS_ENUM(NSInteger, IoTUpdateAuthType) {
    IoTUpdateAuthTypeNone = 0,
    IoTUpdateAuthTypeAny,
    IoTUpdateAuthTypeOpen,
    IoTUpdateAuthTypeWep,
    IoTUpdateAuthTypeWpa,
    IoTUpdateAuthTypeWpa2,
    IoTUpdateAuthTypeWps,
};