@interface IoT{{schema_data.name|class_name_syntax}}Attr : NSObject <IoTPackable, NSCopying>
{% for prop, prop_data in schema_data.props.items() %}
{% if 'enum' in prop_data %}
{% if 'readOnly' in prop_data and prop_data['readOnly']%}
@property (nonatomic, readonly) {{schema_data.name|enum_name_syntax(prop)}} {{prop|variable_syntax(True)}};
{% else %}
@property (nonatomic, assign) {{schema_data.name|enum_name_syntax(prop)}} {{prop|variable_syntax(True)}};
{% endif %}
{% else %}
{% if 'readOnly' in prop_data and prop_data['readOnly']%}
@property (nonatomic, readonly) {{prop_data | convert_to_objc_type(prop)}} {{prop|variable_syntax(True)}};
{% else %}
@property (nonatomic, {{objc_property_qualifier(prop_data, prop)}}) {{prop_data | convert_to_objc_type(prop)}} {{prop|variable_syntax(True)}};
{% endif %}
{% endif %}
{% endfor %}

- (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithStateSyncQueue:(dispatch_queue_t)syncQueue NS_DESIGNATED_INITIALIZER;

@end

