#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.4.2 (swiftlang-1205.0.28.2 clang-1205.0.19.57)
#ifndef SMARTVIEW_SWIFT_H
#define SMARTVIEW_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"

#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif

#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif

#pragma clang diagnostic ignored "-Wauto-import"
#include <Foundation/Foundation.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
#  include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2  __attribute__((__ext_vector_type__(2)));
typedef float swift_float3  __attribute__((__ext_vector_type__(3)));
typedef float swift_float4  __attribute__((__ext_vector_type__(4)));
typedef double swift_double2  __attribute__((__ext_vector_type__(2)));
typedef double swift_double3  __attribute__((__ext_vector_type__(3)));
typedef double swift_double4  __attribute__((__ext_vector_type__(4)));
typedef int swift_int2  __attribute__((__ext_vector_type__(2)));
typedef int swift_int3  __attribute__((__ext_vector_type__(3)));
typedef int swift_int4  __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2  __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3  __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4  __attribute__((__ext_vector_type__(4)));
#endif

#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
#  define SWIFT_CLASS_PROPERTY(...)
# endif
#endif

#if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define SWIFT_RUNTIME_NAME(X)
#endif
#if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
#else
# define SWIFT_COMPILE_NAME(X)
#endif
#if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
#else
# define SWIFT_METHOD_FAMILY(X)
#endif
#if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
#else
# define SWIFT_NOESCAPE
#endif
#if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
#else
# define SWIFT_RELEASES_ARGUMENT
#endif
#if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
#else
# define SWIFT_WARN_UNUSED_RESULT
#endif
#if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
#else
# define SWIFT_NORETURN
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif

#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif

#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif

#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if defined(__has_attribute) && __has_attribute(enum_extensibility)
#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
#  define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
#else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
#endif
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#if __has_feature(modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import Foundation;
@import ObjectiveC;
#endif

#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"

#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="SmartView",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif

@class NSString;

/// A Channel is a discreet connection where multiple clients can communicate
SWIFT_CLASS("_TtC9SmartView7Channel")
@interface Channel : NSObject
/// The description of the client
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An Application represents an application on the TV device.
/// Use this class to control various aspects of the application such as launching the app or getting information
SWIFT_CLASS("_TtC9SmartView11Application")
@interface Application : Channel
@end


@class NSNumber;
@class NSError;
@class NSURL;

/// Base class for audio, video and photo player
SWIFT_CLASS("_TtC9SmartView10BasePlayer")
@interface BasePlayer : NSObject
/// Disconnects to the channel. This method will asynchronously call the delegate’s onDisconnect method and post a
/// ChannelEvent.
/// \param completionHandler callback handler of OnDisconnect
///
- (void)disconnect:(BOOL)leaveHostRunning completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// connects to the DMP standby screen with provides functionality to launch with Logo or upto three Background images
/// \param screenSaverURL1 Optional Background Image Url
///
- (void)standbyConnect:(NSURL * _Nullable)screenSaverURL1 completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// connects to the DMP standby screen with provides functionality to launch with Logo or upto three Background images
/// \param screenSaverURL1 Optional Background Image Url
///
/// \param screenSaverURL2 Optional Background Image Url
///
- (void)standbyConnect:(NSURL * _Nullable)screenSaverURL1 screenSaverURL2:(NSURL * _Nullable)screenSaverURL2 completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// connects to the DMP standby screen with provides functionality to launch with Logo or upto three Background images
/// \param screenSaverURL1 Optional Background Image Url
///
/// \param screenSaverURL2 Optional Background Image Url
///
/// \param screenSaverURL3 Optional Background Image Url
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)standbyConnect:(NSURL * _Nullable)screenSaverURL1 screenSaverURL2:(NSURL * _Nullable)screenSaverURL2 screenSaverURL3:(NSURL * _Nullable)screenSaverURL3 completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// Sets the Watermark for the player
/// \param watermarkUrl Url from where watermark image will be downloaded
///
- (void)setPlayerWatermark:(NSURL * _Nullable)watermarkUrl;
/// Removes Player watermark set
- (void)removePlayerWatermark;
/// Play last sent media contents.
- (void)play;
/// Pause currently playing media.
- (void)pause;
/// Stop currently playing media.
- (void)stop;
/// Mute the volume of player on a connected device.
- (void)mute;
/// UnMute the volume of player on a connected device.
- (void)unMute;
/// Request previous to the player on a connected device.
- (void)previous;
/// Request next to the player on a connected device.
- (void)next;
/// Set volume on device playing media.
/// \param volume Integer value between 0 and 100.
///
- (void)setVolume:(uint8_t)volume;
/// Volume Up.
/// increase volume of the player by 1.
- (void)volumeUp;
/// decrease volume of the player by 1.
- (void)volumeDown;
/// get the control status of the player - like volume etc.
- (void)getControlStatus;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

enum AudioRepeatMode : NSInteger;
@class NSNotification;

/// Audio Player Class handle the Audio share,control and TV Player queue.
SWIFT_CLASS("_TtC9SmartView11AudioPlayer")
@interface AudioPlayer : BasePlayer
/// this method play Audio content on TV.
/// \param contentURL Audio Url
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nonnull)contentURL completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// play Audio content on TV.
/// \param contentURL Content URL
///
/// \param title Content Title
///
/// \param albumName Content album name
///
/// \param albumArtUrl Content thumbnail URL
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nullable)contentURL title:(NSString * _Nonnull)title albumName:(NSString * _Nonnull)albumName albumArtUrl:(NSURL * _Nullable)albumArtUrl completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// Seek the given time in currently playing media.
/// \param time Time in seconds within length of currently playing media.
///
- (void)seek:(NSTimeInterval)time;
/// resumes TV widget/application from background process.
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)resumeApplicationInForeground:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// repeat player list.
- (void)repeat;
/// Set player list mode
/// Supported mode: repeatAll,repeatOff,repeatSingle
- (void)setRepeat:(enum AudioRepeatMode)mode;
/// shuffle player list.
- (void)shuffle;
/// shuffle player list.
- (void)setShuffle:(BOOL)mode;
/// request player list i.e currently playing on TV.
- (void)getList;
/// request to delete(removeAll) player list.
- (void)clearList;
/// remove specific audio from player list.
/// \param contentURL Audio URL
///
- (void)removeFromList:(NSURL * _Nonnull)contentURL;
/// Add Audio item to player list.
/// \param contentURL URL
///
/// \param title Title
///
/// \param albumName Album NAme
///
/// \param albumArtUrl thumbnail URL
///
- (void)addToList:(NSURL * _Nonnull)contentURL title:(NSString * _Nonnull)title albumName:(NSString * _Nonnull)albumName albumArtUrl:(NSURL * _Nonnull)albumArtUrl;
/// Add Audio item to player list.
/// \param arrayDictofData list data in form array of dictionary
///
- (void)addToList:(NSArray<NSDictionary<NSString *, id> *> * _Nonnull)arrayDictofData;
/// Notification of any data received from TV player
/// \param notification contains player queue event and action
///
- (void)onMessage:(NSNotification * _Null_unspecified)notification;
@end

/// Enum for Player list mode
/// Supported mode: repeatAll,repeatOff,repeatSingle
typedef SWIFT_ENUM(NSInteger, AudioRepeatMode, open) {
/// Repeat Off
  AudioRepeatModeRepeatOff = 0,
/// Repeat Single
  AudioRepeatModeRepeatSingle = 1,
/// repeat All
  AudioRepeatModeRepeatAll = 2,
};


SWIFT_PROTOCOL("_TtP9SmartView19AudioPlayerDelegate_")
@protocol AudioPlayerDelegate
@optional
/// event occurs on Buffering of Audio Start.
- (void)onBufferingStart;
/// event occurs on Buffering of Audio Complete.
- (void)onBufferingComplete;
/// event occurs asynchronously when audio buffering is in progress.
/// \param progress current Buffer Progerss
///
- (void)onBufferingProgress:(NSInteger)progress;
/// event occurs continously when Audio streaming is going on.
/// \param progress current playing time of Audio.
///
- (void)onCurrentPlayTime:(NSInteger)progress;
/// event occurs when Audio streaming start.
/// \param duration total duration of audio.
///
- (void)onStreamingStarted:(NSInteger)duration;
/// event occurs when Audio streaming completed.
- (void)onStreamCompleted;
/// event occurs when Audio is shared with TV for the first time.
- (void)onPlayerInitialized;
/// event occurs when different type of media is shared with TV.
/// (Audio is shared after photo/video share)
/// \param playerType current player type (photo/audio/video)
///
- (void)onPlayerChange:(NSString * _Nonnull)playerType;
/// event occurs when paused audio is played.
- (void)onPlay;
/// event occurs on audio pause.
- (void)onPause;
/// event occurs on audio stop.
- (void)onStop;
/// event occurs on Player mute.
- (void)onMute;
/// event occurs on Player unMute.
- (void)onUnMute;
/// event occurs when Player plays next content.
- (void)onNext;
/// event occurs when Player plays previous content.
- (void)onPrevious;
/// provides the status of play controls like volume, mute/unmute and mode of player like single or repeat all
/// \param volLevel player volume level
///
/// \param muteStatus player mute status
///
/// \param shuffleStatus player shuffle status
///
/// \param mode player mode single or repeat all
///
- (void)onControlStatus:(NSInteger)volLevel muteStatus:(BOOL)muteStatus shuffleStatus:(BOOL)shuffleStatus mode:(NSString * _Nonnull)mode;
/// event occurs on  player volume change.
/// \param volLevel player volume to be set.
///
- (void)onVolumeChange:(NSInteger)volLevel;
/// event occurs on audio addition in TV queue(player list).
/// \param enqueuedItem enqueued audio item.
///
- (void)onAddToList:(NSDictionary<NSString *, id> * _Nonnull)enqueuedItem;
/// event occurs on audio remove from TV queue(player list).
/// \param dequeuedItem dequeued audio Item.
///
- (void)onRemoveFromList:(NSDictionary<NSString *, id> * _Nonnull)dequeuedItem;
/// event occurs on TV queue(player list) deletion.
- (void)onClearList;
/// event occurs when player list(TV queue) is recieved.
/// \param queueList play list of TV
///
- (void)onGetList:(NSDictionary<NSString *, id> * _Nonnull)queueList;
/// event occurs when player list is shuffled.
/// \param status shuffle status(true/false)
///
- (void)onShuffle:(BOOL)status;
/// event occurs on player list repeat.
/// \param mode specify repeat all/repeat single audio
///
- (void)onRepeat:(NSString * _Nonnull)mode;
/// occurs when new audio is shared with TV.
/// \param currentItem current shared item.
///
- (void)onCurrentPlaying:(NSDictionary<NSString *, id> * _Nonnull)currentItem;
/// occurs when TV Application/widget goes into background.
- (void)onApplicationSuspend;
/// occurs when  TV Application/widget comes in foreground.
- (void)onApplicationResume;
/// occurs when error is occured in playing Audio
/// \param error eror details
///
- (void)onError:(NSError * _Nonnull)error;
@end








/// A client currently connected to the channel
SWIFT_CLASS("_TtC9SmartView13ChannelClient")
@interface ChannelClient : NSObject
/// The description of the client
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class Message;
@class NSData;

/// The channel delegate protocol defines the event methods available for a channel
SWIFT_PROTOCOL("_TtP9SmartView15ChannelDelegate_")
@protocol ChannelDelegate
@optional
/// Called when the Channel is connected
/// \param client The Client that just connected to the Channel
///
/// \param error An error info if any
///
/// \param error An error info if any
///
- (void)onConnect:(ChannelClient * _Nullable)client error:(NSError * _Nullable)error;
/// Called when the host app is ready to send or receive messages
- (void)onReady;
/// Called when the Channel is disconnected
/// \param client The Client that just disconnected from the Channel
///
/// \param error An error info if any
///
/// \param error An error info if any
///
- (void)onDisconnect:(ChannelClient * _Nullable)client error:(NSError * _Nullable)error;
/// Called when the Channel receives a text message
/// \param message Text message received
///
- (void)onMessage:(Message * _Nonnull)message;
/// Called when the Channel receives a binary data message
/// \param message Text message received
///
/// \param payload Binary payload data
///
- (void)onData:(Message * _Nonnull)message payload:(NSData * _Nonnull)payload;
/// Called when a client connects to the Channel
/// \param client The Client that just connected to the Channel
///
- (void)onClientConnect:(ChannelClient * _Nonnull)client;
/// Called when a client disconnects from the Channel
/// \param client The Client that just disconnected from the Channel
///
- (void)onClientDisconnect:(ChannelClient * _Nonnull)client;
/// Called when a Channel Error is fired
/// \param error The error
///
- (void)onError:(NSError * _Nonnull)error;
@end


/// The Connection delegate protocol defines the event methods available for channel Connection/DisConnection.
SWIFT_PROTOCOL("_TtP9SmartView18ConnectionDelegate_")
@protocol ConnectionDelegate
@optional
/// event occur when connection occur with channel.
/// \param error connection error
///
- (void)onConnect:(NSError * _Nullable)error;
/// event occur when Disconnection occur with channel.
/// \param error disconnect error.
///
- (void)onDisconnect:(NSError * _Nullable)error;
/// event occur when other client connects with channel.
/// \param client client info.
///
- (void)onClientConnect:(ChannelClient * _Nonnull)client;
/// event occur when other client disconnects with channel.
/// \param client client info.
///
- (void)onClientDisconnect:(ChannelClient * _Nonnull)client;
/// event occur when a Channel Error is fired
/// \param error error.
///
- (void)onError:(NSError * _Nonnull)error;
/// event occur when the host app is ready to send or receive messages
- (void)onReady;
@end


/// This class is wrapper which handle tv media calls.
/// its basic functionality is to launch DMP on TV and whatever notification comes from TV side it passes on to further module.
SWIFT_CLASS("_TtC9SmartView11MediaPlayer")
@interface MediaPlayer : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface MediaPlayer (SWIFT_EXTENSION(SmartView)) <ChannelDelegate>
/// Notification of any data received from TV player
/// \param notification contains player queue event and action
///
- (void)onMessage:(Message * _Nonnull)message;
/// event occur when connection occur with channel
/// <ul>
///   <li>
///     client: The client that is connecting which is yourself
///   </li>
///   <li>
///     error: An error info if connect fails
///   </li>
/// </ul>
- (void)onConnect:(ChannelClient * _Nullable)client error:(NSError * _Nullable)error;
/// event occur when disconnection occur with channel.
/// <ul>
///   <li>
///     client: The client that is disconnecting which is yourself
///   </li>
///   <li>
///     error: An error info if disconnect fails
///   </li>
/// </ul>
- (void)onDisconnect:(ChannelClient * _Nullable)client error:(NSError * _Nullable)error;
- (void)onClientConnect:(ChannelClient * _Nonnull)client;
- (void)onClientDisconnect:(ChannelClient * _Nonnull)client;
- (void)onError:(NSError * _Nonnull)error;
- (void)onReady;
@end


/// This class encapsulates the message that
SWIFT_CLASS("_TtC9SmartView7Message")
@interface Message : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Photo Player Class handle the Photo share,control and TV Player queue.
SWIFT_CLASS("_TtC9SmartView11PhotoPlayer")
@interface PhotoPlayer : BasePlayer
/// this method play image content on TV.
/// \param contentURL image Url
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nonnull)contentURL completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// this method play image content on TV.
/// \param contentURL image URL
///
/// \param title image Title
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nullable)contentURL title:(NSString * _Nonnull)title completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// sets background audio in slide show.
/// \param contentURL Background audio contentURL.
///
- (void)setBackgroundMusic:(NSURL * _Nonnull)contentURL;
/// stops background audio in slide show.
- (void)stopBackgroundMusic;
/// resumes TV widget/application from background process.
- (void)resumeApplicationInForeground:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// request player list i.e currently playing on TV.
- (void)getList;
/// request to delete(removeAll) player list.
- (void)clearList;
/// remove specific image from player list.
/// \param contentURL image URL
///
- (void)removeFromList:(NSURL * _Nonnull)contentURL;
/// add image to player list.
/// \param contentURL URL
///
/// \param title Title
///
/// \param albumName Album NAme
///
/// \param albumArtUrl Album Art URL
///
- (void)addToList:(NSURL * _Nonnull)contentURL title:(NSString * _Nonnull)title;
/// add Photo item to player list.
/// \param arrayDictofData list data in form array of dictionary
///
- (void)addToList:(NSArray<NSDictionary<NSString *, id> *> * _Nonnull)arrayDictofData;
/// Notification of any data received from TV player
/// \param notification contains player queue event and action
///
- (void)onMessage:(NSNotification * _Null_unspecified)notification;
@end


/// The Photo Player delegate protocol defines the event methods available for a Photo.
SWIFT_PROTOCOL("_TtP9SmartView19PhotoPlayerDelegate_")
@protocol PhotoPlayerDelegate
@optional
/// event occurs when Photo is shared with TV for the first time or after audio/video share.
- (void)onPlayerInitialized;
/// event occurs when different type of media is shared with TV.
/// (Photo is shared after audio/video share)
/// \param playerType current player type (photo/audio/video)
///
- (void)onPlayerChange:(NSString * _Nonnull)playerType;
/// event occurs when paused photo player list is played.
- (void)onPlay;
/// event occurs on photo player list pause.
- (void)onPause;
/// event occurs on photo player list stop.
- (void)onStop;
/// event occurs on Player mute.
- (void)onMute;
/// event occurs on Player unMute.
- (void)onUnMute;
/// event occurs when Player plays next content.
- (void)onNext;
/// event occurs when Player plays previous content.
- (void)onPrevious;
/// provides the status of play controls like volume, mute/unmute and mode of player like single or repeat all
/// \param volLevel player volume level
///
/// \param muteStatus player mute status
///
/// \param shuffleStatus player shuffle status
///
/// \param mode player mode single or repeat all
///
- (void)onControlStatus:(NSInteger)volLevel muteStatus:(BOOL)muteStatus;
/// event occurs on  player volume change.
/// \param volLevel player volume to be set.
///
- (void)onVolumeChange:(NSInteger)volLevel;
/// event occurs on photo(image) addition in TV queue(player list).
/// \param enqueuedItem enqueued photo item.
///
- (void)onAddToList:(NSDictionary<NSString *, id> * _Nonnull)enqueuedItem;
/// event occurs on photo remove from TV queue(player list).
/// \param dequeuedItem dequeued photo item.
///
- (void)onRemoveFromList:(NSDictionary<NSString *, id> * _Nonnull)dequeuedItem;
/// event occurs on TV queue(player list) deletion.
- (void)onClearList;
/// event occurs when player list(TV queue) is recieved.
/// \param queueList play list of TV
///
- (void)onGetList:(NSDictionary<NSString *, id> * _Nonnull)queueList;
/// occurs when new photo is shared with TV.
/// \param currentItem current shared item.
///
- (void)onCurrentPlaying:(NSDictionary<NSString *, id> * _Nonnull)currentItem;
/// occurs when TV Application/widget goes into background.
- (void)onApplicationSuspend;
/// occurs when  TV Application/widget comes in foreground.
- (void)onApplicationResume;
/// occurs when error is occured in playing Audio
/// \param error eror details
///
- (void)onError:(NSError * _Nonnull)error;
@end

@class ServiceSearch;

/// A Service instance represents the multiscreen service root on the remote device
/// Use the class to control top level services of the device
SWIFT_CLASS("_TtC9SmartView7Service")
@interface Service : NSObject
/// The service description
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// Creates a service search object
///
/// returns:
/// An instance of ServiceSearch
+ (ServiceSearch * _Nonnull)search SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@protocol ServiceSearchDelegate;

/// This class searches the local network for compatible multiscreen services
SWIFT_CLASS("_TtC9SmartView13ServiceSearch")
@interface ServiceSearch : NSObject
/// Set a delegate to receive search events.
@property (nonatomic, weak) id <ServiceSearchDelegate> _Nullable delegate;
/// The search status
@property (nonatomic, readonly) BOOL isSearching;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// request for TV list found on Network/BLE.
///
/// returns:
/// returns TV List.
- (NSArray<Service *> * _Nonnull)getServices SWIFT_WARN_UNUSED_RESULT;
/// A convenience method to suscribe for notifications using blocks
/// \param notificationName The name of the notification
///
/// \param performClosure The notification block, this block will be executed in the main thread
///
///
/// returns:
/// An observer handler for removing/unsubscribing the block from notifications
- (id _Nonnull)on:(NSString * _Nonnull)notificationName performClosure:(void (^ _Nonnull)(NSNotification * _Nullable))performClosure SWIFT_WARN_UNUSED_RESULT;
/// A convenience method to unsuscribe from notifications
/// \param observer The observer object to unregister observations
///
- (void)off:(id _Nonnull)observer;
/// Start searching for devices
- (void)start;
/// Start searching for devices, overloaded function
/// \param showStandByTv false if Standby devices not to be shown
///
- (void)start:(BOOL)showStandByTv;
/// check bluetooth searching is on or off
///
/// returns:
/// true if bluetooth discovery on otherwise false
- (BOOL)isSearchingBLE SWIFT_WARN_UNUSED_RESULT;
/// Start BLE Search Process
///
/// returns:
/// returns ‘True’ if using BLE otherwise ‘False’
- (BOOL)startUsingBLE SWIFT_WARN_UNUSED_RESULT;
/// Stop BLE Search Process
///
/// returns:
/// True
- (BOOL)stopUsingBLE SWIFT_WARN_UNUSED_RESULT;
/// Stops the Device discovery.
- (void)stop;
/// Returns what status is set to StandbyMode.
/// <ul>
///   <li>
///     returns Bool: true if standby devices are shown
///   </li>
/// </ul>
- (BOOL)getStandByMode SWIFT_WARN_UNUSED_RESULT;
@end




@interface ServiceSearch (SWIFT_EXTENSION(SmartView))
/// Clear the standby devices from the DB
/// \param None No parameter required
///
- (void)clearStandbyDevices;
@end


/// This protocol defines the methods for ServiceSearch discovery
SWIFT_PROTOCOL("_TtP9SmartView21ServiceSearchDelegate_")
@protocol ServiceSearchDelegate
@optional
/// The ServiceSearch will call this delegate method when a service is found
/// \param service The found service
///
- (void)onServiceFound:(Service * _Nonnull)service;
/// The ServiceSearch will call this delegate method when a service is lost
/// \param service The lost service
///
- (void)onServiceLost:(Service * _Nonnull)service;
/// The ServiceSearch will call this delegate method after stopping the search
- (void)onStop;
/// The ServiceSearch will call this delegate method after the search has started
- (void)onStart;
/// If BLE device is found
/// \param NameOfTV Name of TV found on Bluetooth
///
- (void)onFoundOnlyBLE:(NSString * _Nonnull)NameOfTV;
/// Find other network (other than BLE)
/// \param NameOfTV Name of TV found on Network
///
- (void)onFoundOtherNetwork:(NSString * _Nonnull)NameOfTV;
@end

/// Describe Service Search DiscoveryType
typedef SWIFT_ENUM(NSInteger, ServiceSearchDiscoveryType, open) {
/// LAN type
  ServiceSearchDiscoveryTypeLAN = 0,
/// Cloud Type
  ServiceSearchDiscoveryTypeCLOUD = 1,
};

enum VideoRepeatMode : NSInteger;

/// Video Player Class handle the Video share, control and TV Player queue.
SWIFT_CLASS("_TtC9SmartView11VideoPlayer")
@interface VideoPlayer : BasePlayer
/// this method play video content on TV.
/// \param contentURL video Url
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nonnull)contentURL completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// this method play video content on TV.
/// \param contentURL Content URL
///
/// \param title Content Title
///
/// \param thumbnailURL Content thumbnail URL
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nullable)contentURL title:(NSString * _Nonnull)title thumbnailURL:(NSURL * _Nullable)thumbnailURL completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// This method sends request to player for fast forwarding the video.
- (void)forward;
/// This method sends request to player for rewind the video.
- (void)rewind;
/// Seek the given time in currently playing media.
/// \param time Time in seconds within length of currently playing media.
///
- (void)seek:(NSTimeInterval)time;
/// repeat player list.
- (void)repeat;
/// Set player list mode
/// Supported mode: repeatAll,repeatOff,repeatSingle
- (void)setRepeat:(enum VideoRepeatMode)mode;
/// resumes TV widget/application from background process.
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)resumeApplicationInForeground:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// request player list i.e currently playing on TV.
- (void)getList;
/// request to delete(removeAll) player list.
- (void)clearList;
/// remove specific video content from player list.
/// \param contentURL video URL
///
- (void)removeFromList:(NSURL * _Nonnull)contentURL;
/// Add video item to player list.
/// \param contentURL URL
///
/// \param title Title
///
/// \param thumbnailURL thumbnail URL
///
- (void)addToList:(NSURL * _Nonnull)contentURL title:(NSString * _Nonnull)title thumbnailURL:(NSURL * _Nonnull)thumbnailURL;
/// Add video item to player list.
/// \param arrayDictofData list data in form array of dictionary
///
- (void)addToList:(NSArray<NSDictionary<NSString *, id> *> * _Nonnull)arrayDictofData;
/// Notification of any data received from TV player
/// \param notification contains player queue event and action
///
- (void)onMessage:(NSNotification * _Null_unspecified)notification;
@end

/// Enum for Player list mode
/// Supported mode: repeatAll,repeatOff,repeatSingle
typedef SWIFT_ENUM(NSInteger, VideoRepeatMode, open) {
/// Repeat Off
  VideoRepeatModeRepeatOff = 0,
/// Repeat Single
  VideoRepeatModeRepeatSingle = 1,
/// repeat All
  VideoRepeatModeRepeatAll = 2,
};


/// The Video Player delegate protocol defines the event methods available for a Video.
SWIFT_PROTOCOL("_TtP9SmartView19VideoPlayerDelegate_")
@protocol VideoPlayerDelegate
@optional
/// event occurs on Buffering of Video Start.
- (void)onBufferingStart;
/// event occurs on Buffering of Video Complete.
- (void)onBufferingComplete;
/// event occurs asynchronously when video buffering is in progress.
/// \param progress current Buffer Progerss
///
- (void)onBufferingProgress:(NSInteger)progress;
/// event occurs continously when video streaming is going on.
/// \param progress current playing time of video.
///
- (void)onCurrentPlayTime:(NSInteger)progress;
/// event occurs when video streaming start.
/// \param duration total duration of video.
///
- (void)onStreamingStarted:(NSInteger)duration;
/// event occurs when video streaming completed.
- (void)onStreamCompleted;
/// event occurs when video is shared with TV for the first time.
- (void)onPlayerInitialized;
/// event occurs when different type of media is shared with TV.
/// (video is shared after photo/audio share)
/// \param playerType current player type (photo/audio/video)
///
- (void)onPlayerChange:(NSString * _Nonnull)playerType;
/// event occurs when paused video is played.
- (void)onPlay;
/// event occurs on video pause.
- (void)onPause;
/// event occurs on video stop.
- (void)onStop;
/// event occurs on fast forwarding the video.
- (void)onForward;
/// event occurs on rewind the video.
- (void)onRewind;
/// event occurs on Player mute.
- (void)onMute;
/// event occurs on Player unMute.
- (void)onUnMute;
/// event occurs when Player plays next content.
- (void)onNext;
/// event occurs when Player plays previous content.
- (void)onPrevious;
/// provides the status of play controls like volume, mute/unmute and mode of player like single or repeat all
/// \param volLevel player volume level
///
/// \param muteStatus player mute status
///
/// \param shuffleStatus player shuffle status
///
/// \param mode player mode single or repeat all
///
- (void)onControlStatus:(NSInteger)volLevel muteStatus:(BOOL)muteStatus mode:(NSString * _Nonnull)mode;
/// event occurs on  player volume change.
/// \param volLevel player volume to be set.
///
- (void)onVolumeChange:(NSInteger)volLevel;
/// event occurs on video addition in TV queue(player list).
/// \param enqueuedItem enqueued video item.
///
- (void)onAddToList:(NSDictionary<NSString *, id> * _Nonnull)enqueuedItem;
/// event occurs on video remove from TV queue(player list).
/// \param dequeuedItem dequeued video Item.
///
- (void)onRemoveFromList:(NSDictionary<NSString *, id> * _Nonnull)dequeuedItem;
/// event occurs on TV queue(player list) deletion.
- (void)onClearList;
/// event occurs when player list(TV queue) is recieved.
/// \param queueList play list of TV
///
- (void)onGetList:(NSDictionary<NSString *, id> * _Nonnull)queueList;
/// event occurs on player list repeat.
/// \param mode specify repeat all/repeat single audio
///
- (void)onRepeat:(NSString * _Nonnull)mode;
/// occurs when new audio is shared with TV.
/// \param currentItem current shared item.
///
- (void)onCurrentPlaying:(NSDictionary<NSString *, id> * _Nonnull)currentItem;
/// occurs when TV Application/widget goes into background.
- (void)onApplicationSuspend;
/// occurs when  TV Application/widget comes in foreground.
- (void)onApplicationResume;
/// occurs when error is occured in playing Audio
/// \param error eror details
///
- (void)onError:(NSError * _Nonnull)error;
@end

@class NSStream;

SWIFT_CLASS("_TtC9SmartView9WebSocket")
@interface WebSocket : NSObject <NSStreamDelegate>
/// Delegate for the stream methods. Processes incoming bytes
- (void)stream:(NSStream * _Nonnull)aStream handleEvent:(NSStreamEvent)eventCode;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#pragma clang diagnostic pop
#endif

#elif defined(__ARM_ARCH_7A__) && __ARM_ARCH_7A__
// Generated by Apple Swift version 5.4.2 (swiftlang-1205.0.28.2 clang-1205.0.19.57)
#ifndef SMARTVIEW_SWIFT_H
#define SMARTVIEW_SWIFT_H
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wgcc-compat"

#if !defined(__has_include)
# define __has_include(x) 0
#endif
#if !defined(__has_attribute)
# define __has_attribute(x) 0
#endif
#if !defined(__has_feature)
# define __has_feature(x) 0
#endif
#if !defined(__has_warning)
# define __has_warning(x) 0
#endif

#if __has_include(<swift/objc-prologue.h>)
# include <swift/objc-prologue.h>
#endif

#pragma clang diagnostic ignored "-Wauto-import"
#include <Foundation/Foundation.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

#if !defined(SWIFT_TYPEDEFS)
# define SWIFT_TYPEDEFS 1
# if __has_include(<uchar.h>)
#  include <uchar.h>
# elif !defined(__cplusplus)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
# endif
typedef float swift_float2  __attribute__((__ext_vector_type__(2)));
typedef float swift_float3  __attribute__((__ext_vector_type__(3)));
typedef float swift_float4  __attribute__((__ext_vector_type__(4)));
typedef double swift_double2  __attribute__((__ext_vector_type__(2)));
typedef double swift_double3  __attribute__((__ext_vector_type__(3)));
typedef double swift_double4  __attribute__((__ext_vector_type__(4)));
typedef int swift_int2  __attribute__((__ext_vector_type__(2)));
typedef int swift_int3  __attribute__((__ext_vector_type__(3)));
typedef int swift_int4  __attribute__((__ext_vector_type__(4)));
typedef unsigned int swift_uint2  __attribute__((__ext_vector_type__(2)));
typedef unsigned int swift_uint3  __attribute__((__ext_vector_type__(3)));
typedef unsigned int swift_uint4  __attribute__((__ext_vector_type__(4)));
#endif

#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif
#if !defined(SWIFT_CLASS_PROPERTY)
# if __has_feature(objc_class_property)
#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
# else
#  define SWIFT_CLASS_PROPERTY(...)
# endif
#endif

#if __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define SWIFT_RUNTIME_NAME(X)
#endif
#if __has_attribute(swift_name)
# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
#else
# define SWIFT_COMPILE_NAME(X)
#endif
#if __has_attribute(objc_method_family)
# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
#else
# define SWIFT_METHOD_FAMILY(X)
#endif
#if __has_attribute(noescape)
# define SWIFT_NOESCAPE __attribute__((noescape))
#else
# define SWIFT_NOESCAPE
#endif
#if __has_attribute(ns_consumed)
# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed))
#else
# define SWIFT_RELEASES_ARGUMENT
#endif
#if __has_attribute(warn_unused_result)
# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
#else
# define SWIFT_WARN_UNUSED_RESULT
#endif
#if __has_attribute(noreturn)
# define SWIFT_NORETURN __attribute__((noreturn))
#else
# define SWIFT_NORETURN
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_ENUM_EXTRA)
# define SWIFT_ENUM_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if __has_attribute(objc_subclassing_restricted)
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif
#if !defined(SWIFT_RESILIENT_CLASS)
# if __has_attribute(objc_class_stub)
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME)
# else
#  define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)
#  define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)
# endif
#endif

#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif

#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif

#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#if !defined(SWIFT_ENUM_ATTR)
# if defined(__has_attribute) && __has_attribute(enum_extensibility)
#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
# else
#  define SWIFT_ENUM_ATTR(_extensibility)
# endif
#endif
#if !defined(SWIFT_ENUM)
# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# if __has_feature(generalized_swift_name)
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
# else
#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
# endif
#endif
#if !defined(SWIFT_UNAVAILABLE)
# define SWIFT_UNAVAILABLE __attribute__((unavailable))
#endif
#if !defined(SWIFT_UNAVAILABLE_MSG)
# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
#endif
#if !defined(SWIFT_AVAILABILITY)
# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
#endif
#if !defined(SWIFT_WEAK_IMPORT)
# define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#endif
#if !defined(SWIFT_DEPRECATED)
# define SWIFT_DEPRECATED __attribute__((deprecated))
#endif
#if !defined(SWIFT_DEPRECATED_MSG)
# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
#endif
#if __has_feature(attribute_diagnose_if_objc)
# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
#else
# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
#endif
#if !defined(IBSegueAction)
# define IBSegueAction
#endif
#if __has_feature(modules)
#if __has_warning("-Watimport-in-framework-header")
#pragma clang diagnostic ignored "-Watimport-in-framework-header"
#endif
@import Foundation;
@import ObjectiveC;
#endif

#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
#pragma clang diagnostic ignored "-Wduplicate-method-arg"
#if __has_warning("-Wpragma-clang-attribute")
# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
#endif
#pragma clang diagnostic ignored "-Wunknown-pragmas"
#pragma clang diagnostic ignored "-Wnullability"

#if __has_attribute(external_source_symbol)
# pragma push_macro("any")
# undef any
# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="SmartView",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
# pragma pop_macro("any")
#endif

@class NSString;

/// A Channel is a discreet connection where multiple clients can communicate
SWIFT_CLASS("_TtC9SmartView7Channel")
@interface Channel : NSObject
/// The description of the client
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// An Application represents an application on the TV device.
/// Use this class to control various aspects of the application such as launching the app or getting information
SWIFT_CLASS("_TtC9SmartView11Application")
@interface Application : Channel
@end


@class NSNumber;
@class NSError;
@class NSURL;

/// Base class for audio, video and photo player
SWIFT_CLASS("_TtC9SmartView10BasePlayer")
@interface BasePlayer : NSObject
/// Disconnects to the channel. This method will asynchronously call the delegate’s onDisconnect method and post a
/// ChannelEvent.
/// \param completionHandler callback handler of OnDisconnect
///
- (void)disconnect:(BOOL)leaveHostRunning completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// connects to the DMP standby screen with provides functionality to launch with Logo or upto three Background images
/// \param screenSaverURL1 Optional Background Image Url
///
- (void)standbyConnect:(NSURL * _Nullable)screenSaverURL1 completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// connects to the DMP standby screen with provides functionality to launch with Logo or upto three Background images
/// \param screenSaverURL1 Optional Background Image Url
///
/// \param screenSaverURL2 Optional Background Image Url
///
- (void)standbyConnect:(NSURL * _Nullable)screenSaverURL1 screenSaverURL2:(NSURL * _Nullable)screenSaverURL2 completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// connects to the DMP standby screen with provides functionality to launch with Logo or upto three Background images
/// \param screenSaverURL1 Optional Background Image Url
///
/// \param screenSaverURL2 Optional Background Image Url
///
/// \param screenSaverURL3 Optional Background Image Url
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)standbyConnect:(NSURL * _Nullable)screenSaverURL1 screenSaverURL2:(NSURL * _Nullable)screenSaverURL2 screenSaverURL3:(NSURL * _Nullable)screenSaverURL3 completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// Sets the Watermark for the player
/// \param watermarkUrl Url from where watermark image will be downloaded
///
- (void)setPlayerWatermark:(NSURL * _Nullable)watermarkUrl;
/// Removes Player watermark set
- (void)removePlayerWatermark;
/// Play last sent media contents.
- (void)play;
/// Pause currently playing media.
- (void)pause;
/// Stop currently playing media.
- (void)stop;
/// Mute the volume of player on a connected device.
- (void)mute;
/// UnMute the volume of player on a connected device.
- (void)unMute;
/// Request previous to the player on a connected device.
- (void)previous;
/// Request next to the player on a connected device.
- (void)next;
/// Set volume on device playing media.
/// \param volume Integer value between 0 and 100.
///
- (void)setVolume:(uint8_t)volume;
/// Volume Up.
/// increase volume of the player by 1.
- (void)volumeUp;
/// decrease volume of the player by 1.
- (void)volumeDown;
/// get the control status of the player - like volume etc.
- (void)getControlStatus;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

enum AudioRepeatMode : NSInteger;
@class NSNotification;

/// Audio Player Class handle the Audio share,control and TV Player queue.
SWIFT_CLASS("_TtC9SmartView11AudioPlayer")
@interface AudioPlayer : BasePlayer
/// this method play Audio content on TV.
/// \param contentURL Audio Url
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nonnull)contentURL completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// play Audio content on TV.
/// \param contentURL Content URL
///
/// \param title Content Title
///
/// \param albumName Content album name
///
/// \param albumArtUrl Content thumbnail URL
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nullable)contentURL title:(NSString * _Nonnull)title albumName:(NSString * _Nonnull)albumName albumArtUrl:(NSURL * _Nullable)albumArtUrl completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// Seek the given time in currently playing media.
/// \param time Time in seconds within length of currently playing media.
///
- (void)seek:(NSTimeInterval)time;
/// resumes TV widget/application from background process.
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)resumeApplicationInForeground:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// repeat player list.
- (void)repeat;
/// Set player list mode
/// Supported mode: repeatAll,repeatOff,repeatSingle
- (void)setRepeat:(enum AudioRepeatMode)mode;
/// shuffle player list.
- (void)shuffle;
/// shuffle player list.
- (void)setShuffle:(BOOL)mode;
/// request player list i.e currently playing on TV.
- (void)getList;
/// request to delete(removeAll) player list.
- (void)clearList;
/// remove specific audio from player list.
/// \param contentURL Audio URL
///
- (void)removeFromList:(NSURL * _Nonnull)contentURL;
/// Add Audio item to player list.
/// \param contentURL URL
///
/// \param title Title
///
/// \param albumName Album NAme
///
/// \param albumArtUrl thumbnail URL
///
- (void)addToList:(NSURL * _Nonnull)contentURL title:(NSString * _Nonnull)title albumName:(NSString * _Nonnull)albumName albumArtUrl:(NSURL * _Nonnull)albumArtUrl;
/// Add Audio item to player list.
/// \param arrayDictofData list data in form array of dictionary
///
- (void)addToList:(NSArray<NSDictionary<NSString *, id> *> * _Nonnull)arrayDictofData;
/// Notification of any data received from TV player
/// \param notification contains player queue event and action
///
- (void)onMessage:(NSNotification * _Null_unspecified)notification;
@end

/// Enum for Player list mode
/// Supported mode: repeatAll,repeatOff,repeatSingle
typedef SWIFT_ENUM(NSInteger, AudioRepeatMode, open) {
/// Repeat Off
  AudioRepeatModeRepeatOff = 0,
/// Repeat Single
  AudioRepeatModeRepeatSingle = 1,
/// repeat All
  AudioRepeatModeRepeatAll = 2,
};


SWIFT_PROTOCOL("_TtP9SmartView19AudioPlayerDelegate_")
@protocol AudioPlayerDelegate
@optional
/// event occurs on Buffering of Audio Start.
- (void)onBufferingStart;
/// event occurs on Buffering of Audio Complete.
- (void)onBufferingComplete;
/// event occurs asynchronously when audio buffering is in progress.
/// \param progress current Buffer Progerss
///
- (void)onBufferingProgress:(NSInteger)progress;
/// event occurs continously when Audio streaming is going on.
/// \param progress current playing time of Audio.
///
- (void)onCurrentPlayTime:(NSInteger)progress;
/// event occurs when Audio streaming start.
/// \param duration total duration of audio.
///
- (void)onStreamingStarted:(NSInteger)duration;
/// event occurs when Audio streaming completed.
- (void)onStreamCompleted;
/// event occurs when Audio is shared with TV for the first time.
- (void)onPlayerInitialized;
/// event occurs when different type of media is shared with TV.
/// (Audio is shared after photo/video share)
/// \param playerType current player type (photo/audio/video)
///
- (void)onPlayerChange:(NSString * _Nonnull)playerType;
/// event occurs when paused audio is played.
- (void)onPlay;
/// event occurs on audio pause.
- (void)onPause;
/// event occurs on audio stop.
- (void)onStop;
/// event occurs on Player mute.
- (void)onMute;
/// event occurs on Player unMute.
- (void)onUnMute;
/// event occurs when Player plays next content.
- (void)onNext;
/// event occurs when Player plays previous content.
- (void)onPrevious;
/// provides the status of play controls like volume, mute/unmute and mode of player like single or repeat all
/// \param volLevel player volume level
///
/// \param muteStatus player mute status
///
/// \param shuffleStatus player shuffle status
///
/// \param mode player mode single or repeat all
///
- (void)onControlStatus:(NSInteger)volLevel muteStatus:(BOOL)muteStatus shuffleStatus:(BOOL)shuffleStatus mode:(NSString * _Nonnull)mode;
/// event occurs on  player volume change.
/// \param volLevel player volume to be set.
///
- (void)onVolumeChange:(NSInteger)volLevel;
/// event occurs on audio addition in TV queue(player list).
/// \param enqueuedItem enqueued audio item.
///
- (void)onAddToList:(NSDictionary<NSString *, id> * _Nonnull)enqueuedItem;
/// event occurs on audio remove from TV queue(player list).
/// \param dequeuedItem dequeued audio Item.
///
- (void)onRemoveFromList:(NSDictionary<NSString *, id> * _Nonnull)dequeuedItem;
/// event occurs on TV queue(player list) deletion.
- (void)onClearList;
/// event occurs when player list(TV queue) is recieved.
/// \param queueList play list of TV
///
- (void)onGetList:(NSDictionary<NSString *, id> * _Nonnull)queueList;
/// event occurs when player list is shuffled.
/// \param status shuffle status(true/false)
///
- (void)onShuffle:(BOOL)status;
/// event occurs on player list repeat.
/// \param mode specify repeat all/repeat single audio
///
- (void)onRepeat:(NSString * _Nonnull)mode;
/// occurs when new audio is shared with TV.
/// \param currentItem current shared item.
///
- (void)onCurrentPlaying:(NSDictionary<NSString *, id> * _Nonnull)currentItem;
/// occurs when TV Application/widget goes into background.
- (void)onApplicationSuspend;
/// occurs when  TV Application/widget comes in foreground.
- (void)onApplicationResume;
/// occurs when error is occured in playing Audio
/// \param error eror details
///
- (void)onError:(NSError * _Nonnull)error;
@end








/// A client currently connected to the channel
SWIFT_CLASS("_TtC9SmartView13ChannelClient")
@interface ChannelClient : NSObject
/// The description of the client
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

@class Message;
@class NSData;

/// The channel delegate protocol defines the event methods available for a channel
SWIFT_PROTOCOL("_TtP9SmartView15ChannelDelegate_")
@protocol ChannelDelegate
@optional
/// Called when the Channel is connected
/// \param client The Client that just connected to the Channel
///
/// \param error An error info if any
///
/// \param error An error info if any
///
- (void)onConnect:(ChannelClient * _Nullable)client error:(NSError * _Nullable)error;
/// Called when the host app is ready to send or receive messages
- (void)onReady;
/// Called when the Channel is disconnected
/// \param client The Client that just disconnected from the Channel
///
/// \param error An error info if any
///
/// \param error An error info if any
///
- (void)onDisconnect:(ChannelClient * _Nullable)client error:(NSError * _Nullable)error;
/// Called when the Channel receives a text message
/// \param message Text message received
///
- (void)onMessage:(Message * _Nonnull)message;
/// Called when the Channel receives a binary data message
/// \param message Text message received
///
/// \param payload Binary payload data
///
- (void)onData:(Message * _Nonnull)message payload:(NSData * _Nonnull)payload;
/// Called when a client connects to the Channel
/// \param client The Client that just connected to the Channel
///
- (void)onClientConnect:(ChannelClient * _Nonnull)client;
/// Called when a client disconnects from the Channel
/// \param client The Client that just disconnected from the Channel
///
- (void)onClientDisconnect:(ChannelClient * _Nonnull)client;
/// Called when a Channel Error is fired
/// \param error The error
///
- (void)onError:(NSError * _Nonnull)error;
@end


/// The Connection delegate protocol defines the event methods available for channel Connection/DisConnection.
SWIFT_PROTOCOL("_TtP9SmartView18ConnectionDelegate_")
@protocol ConnectionDelegate
@optional
/// event occur when connection occur with channel.
/// \param error connection error
///
- (void)onConnect:(NSError * _Nullable)error;
/// event occur when Disconnection occur with channel.
/// \param error disconnect error.
///
- (void)onDisconnect:(NSError * _Nullable)error;
/// event occur when other client connects with channel.
/// \param client client info.
///
- (void)onClientConnect:(ChannelClient * _Nonnull)client;
/// event occur when other client disconnects with channel.
/// \param client client info.
///
- (void)onClientDisconnect:(ChannelClient * _Nonnull)client;
/// event occur when a Channel Error is fired
/// \param error error.
///
- (void)onError:(NSError * _Nonnull)error;
/// event occur when the host app is ready to send or receive messages
- (void)onReady;
@end


/// This class is wrapper which handle tv media calls.
/// its basic functionality is to launch DMP on TV and whatever notification comes from TV side it passes on to further module.
SWIFT_CLASS("_TtC9SmartView11MediaPlayer")
@interface MediaPlayer : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@interface MediaPlayer (SWIFT_EXTENSION(SmartView)) <ChannelDelegate>
/// Notification of any data received from TV player
/// \param notification contains player queue event and action
///
- (void)onMessage:(Message * _Nonnull)message;
/// event occur when connection occur with channel
/// <ul>
///   <li>
///     client: The client that is connecting which is yourself
///   </li>
///   <li>
///     error: An error info if connect fails
///   </li>
/// </ul>
- (void)onConnect:(ChannelClient * _Nullable)client error:(NSError * _Nullable)error;
/// event occur when disconnection occur with channel.
/// <ul>
///   <li>
///     client: The client that is disconnecting which is yourself
///   </li>
///   <li>
///     error: An error info if disconnect fails
///   </li>
/// </ul>
- (void)onDisconnect:(ChannelClient * _Nullable)client error:(NSError * _Nullable)error;
- (void)onClientConnect:(ChannelClient * _Nonnull)client;
- (void)onClientDisconnect:(ChannelClient * _Nonnull)client;
- (void)onError:(NSError * _Nonnull)error;
- (void)onReady;
@end


/// This class encapsulates the message that
SWIFT_CLASS("_TtC9SmartView7Message")
@interface Message : NSObject
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


/// Photo Player Class handle the Photo share,control and TV Player queue.
SWIFT_CLASS("_TtC9SmartView11PhotoPlayer")
@interface PhotoPlayer : BasePlayer
/// this method play image content on TV.
/// \param contentURL image Url
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nonnull)contentURL completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// this method play image content on TV.
/// \param contentURL image URL
///
/// \param title image Title
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nullable)contentURL title:(NSString * _Nonnull)title completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// sets background audio in slide show.
/// \param contentURL Background audio contentURL.
///
- (void)setBackgroundMusic:(NSURL * _Nonnull)contentURL;
/// stops background audio in slide show.
- (void)stopBackgroundMusic;
/// resumes TV widget/application from background process.
- (void)resumeApplicationInForeground:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// request player list i.e currently playing on TV.
- (void)getList;
/// request to delete(removeAll) player list.
- (void)clearList;
/// remove specific image from player list.
/// \param contentURL image URL
///
- (void)removeFromList:(NSURL * _Nonnull)contentURL;
/// add image to player list.
/// \param contentURL URL
///
/// \param title Title
///
/// \param albumName Album NAme
///
/// \param albumArtUrl Album Art URL
///
- (void)addToList:(NSURL * _Nonnull)contentURL title:(NSString * _Nonnull)title;
/// add Photo item to player list.
/// \param arrayDictofData list data in form array of dictionary
///
- (void)addToList:(NSArray<NSDictionary<NSString *, id> *> * _Nonnull)arrayDictofData;
/// Notification of any data received from TV player
/// \param notification contains player queue event and action
///
- (void)onMessage:(NSNotification * _Null_unspecified)notification;
@end


/// The Photo Player delegate protocol defines the event methods available for a Photo.
SWIFT_PROTOCOL("_TtP9SmartView19PhotoPlayerDelegate_")
@protocol PhotoPlayerDelegate
@optional
/// event occurs when Photo is shared with TV for the first time or after audio/video share.
- (void)onPlayerInitialized;
/// event occurs when different type of media is shared with TV.
/// (Photo is shared after audio/video share)
/// \param playerType current player type (photo/audio/video)
///
- (void)onPlayerChange:(NSString * _Nonnull)playerType;
/// event occurs when paused photo player list is played.
- (void)onPlay;
/// event occurs on photo player list pause.
- (void)onPause;
/// event occurs on photo player list stop.
- (void)onStop;
/// event occurs on Player mute.
- (void)onMute;
/// event occurs on Player unMute.
- (void)onUnMute;
/// event occurs when Player plays next content.
- (void)onNext;
/// event occurs when Player plays previous content.
- (void)onPrevious;
/// provides the status of play controls like volume, mute/unmute and mode of player like single or repeat all
/// \param volLevel player volume level
///
/// \param muteStatus player mute status
///
/// \param shuffleStatus player shuffle status
///
/// \param mode player mode single or repeat all
///
- (void)onControlStatus:(NSInteger)volLevel muteStatus:(BOOL)muteStatus;
/// event occurs on  player volume change.
/// \param volLevel player volume to be set.
///
- (void)onVolumeChange:(NSInteger)volLevel;
/// event occurs on photo(image) addition in TV queue(player list).
/// \param enqueuedItem enqueued photo item.
///
- (void)onAddToList:(NSDictionary<NSString *, id> * _Nonnull)enqueuedItem;
/// event occurs on photo remove from TV queue(player list).
/// \param dequeuedItem dequeued photo item.
///
- (void)onRemoveFromList:(NSDictionary<NSString *, id> * _Nonnull)dequeuedItem;
/// event occurs on TV queue(player list) deletion.
- (void)onClearList;
/// event occurs when player list(TV queue) is recieved.
/// \param queueList play list of TV
///
- (void)onGetList:(NSDictionary<NSString *, id> * _Nonnull)queueList;
/// occurs when new photo is shared with TV.
/// \param currentItem current shared item.
///
- (void)onCurrentPlaying:(NSDictionary<NSString *, id> * _Nonnull)currentItem;
/// occurs when TV Application/widget goes into background.
- (void)onApplicationSuspend;
/// occurs when  TV Application/widget comes in foreground.
- (void)onApplicationResume;
/// occurs when error is occured in playing Audio
/// \param error eror details
///
- (void)onError:(NSError * _Nonnull)error;
@end

@class ServiceSearch;

/// A Service instance represents the multiscreen service root on the remote device
/// Use the class to control top level services of the device
SWIFT_CLASS("_TtC9SmartView7Service")
@interface Service : NSObject
/// The service description
@property (nonatomic, readonly, copy) NSString * _Nonnull description;
/// Creates a service search object
///
/// returns:
/// An instance of ServiceSearch
+ (ServiceSearch * _Nonnull)search SWIFT_WARN_UNUSED_RESULT;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end


@protocol ServiceSearchDelegate;

/// This class searches the local network for compatible multiscreen services
SWIFT_CLASS("_TtC9SmartView13ServiceSearch")
@interface ServiceSearch : NSObject
/// Set a delegate to receive search events.
@property (nonatomic, weak) id <ServiceSearchDelegate> _Nullable delegate;
/// The search status
@property (nonatomic, readonly) BOOL isSearching;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
/// request for TV list found on Network/BLE.
///
/// returns:
/// returns TV List.
- (NSArray<Service *> * _Nonnull)getServices SWIFT_WARN_UNUSED_RESULT;
/// A convenience method to suscribe for notifications using blocks
/// \param notificationName The name of the notification
///
/// \param performClosure The notification block, this block will be executed in the main thread
///
///
/// returns:
/// An observer handler for removing/unsubscribing the block from notifications
- (id _Nonnull)on:(NSString * _Nonnull)notificationName performClosure:(void (^ _Nonnull)(NSNotification * _Nullable))performClosure SWIFT_WARN_UNUSED_RESULT;
/// A convenience method to unsuscribe from notifications
/// \param observer The observer object to unregister observations
///
- (void)off:(id _Nonnull)observer;
/// Start searching for devices
- (void)start;
/// Start searching for devices, overloaded function
/// \param showStandByTv false if Standby devices not to be shown
///
- (void)start:(BOOL)showStandByTv;
/// check bluetooth searching is on or off
///
/// returns:
/// true if bluetooth discovery on otherwise false
- (BOOL)isSearchingBLE SWIFT_WARN_UNUSED_RESULT;
/// Start BLE Search Process
///
/// returns:
/// returns ‘True’ if using BLE otherwise ‘False’
- (BOOL)startUsingBLE SWIFT_WARN_UNUSED_RESULT;
/// Stop BLE Search Process
///
/// returns:
/// True
- (BOOL)stopUsingBLE SWIFT_WARN_UNUSED_RESULT;
/// Stops the Device discovery.
- (void)stop;
/// Returns what status is set to StandbyMode.
/// <ul>
///   <li>
///     returns Bool: true if standby devices are shown
///   </li>
/// </ul>
- (BOOL)getStandByMode SWIFT_WARN_UNUSED_RESULT;
@end




@interface ServiceSearch (SWIFT_EXTENSION(SmartView))
/// Clear the standby devices from the DB
/// \param None No parameter required
///
- (void)clearStandbyDevices;
@end


/// This protocol defines the methods for ServiceSearch discovery
SWIFT_PROTOCOL("_TtP9SmartView21ServiceSearchDelegate_")
@protocol ServiceSearchDelegate
@optional
/// The ServiceSearch will call this delegate method when a service is found
/// \param service The found service
///
- (void)onServiceFound:(Service * _Nonnull)service;
/// The ServiceSearch will call this delegate method when a service is lost
/// \param service The lost service
///
- (void)onServiceLost:(Service * _Nonnull)service;
/// The ServiceSearch will call this delegate method after stopping the search
- (void)onStop;
/// The ServiceSearch will call this delegate method after the search has started
- (void)onStart;
/// If BLE device is found
/// \param NameOfTV Name of TV found on Bluetooth
///
- (void)onFoundOnlyBLE:(NSString * _Nonnull)NameOfTV;
/// Find other network (other than BLE)
/// \param NameOfTV Name of TV found on Network
///
- (void)onFoundOtherNetwork:(NSString * _Nonnull)NameOfTV;
@end

/// Describe Service Search DiscoveryType
typedef SWIFT_ENUM(NSInteger, ServiceSearchDiscoveryType, open) {
/// LAN type
  ServiceSearchDiscoveryTypeLAN = 0,
/// Cloud Type
  ServiceSearchDiscoveryTypeCLOUD = 1,
};

enum VideoRepeatMode : NSInteger;

/// Video Player Class handle the Video share, control and TV Player queue.
SWIFT_CLASS("_TtC9SmartView11VideoPlayer")
@interface VideoPlayer : BasePlayer
/// this method play video content on TV.
/// \param contentURL video Url
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nonnull)contentURL completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// this method play video content on TV.
/// \param contentURL Content URL
///
/// \param title Content Title
///
/// \param thumbnailURL Content thumbnail URL
///
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)playContent:(NSURL * _Nullable)contentURL title:(NSString * _Nonnull)title thumbnailURL:(NSURL * _Nullable)thumbnailURL completionHandler:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// This method sends request to player for fast forwarding the video.
- (void)forward;
/// This method sends request to player for rewind the video.
- (void)rewind;
/// Seek the given time in currently playing media.
/// \param time Time in seconds within length of currently playing media.
///
- (void)seek:(NSTimeInterval)time;
/// repeat player list.
- (void)repeat;
/// Set player list mode
/// Supported mode: repeatAll,repeatOff,repeatSingle
- (void)setRepeat:(enum VideoRepeatMode)mode;
/// resumes TV widget/application from background process.
/// \param completionHandler The response completion closure, it will be executed in the request queue i.e. in a backgound thread.
///
- (void)resumeApplicationInForeground:(void (^ _Nullable)(NSError * _Nullable))completionHandler;
/// request player list i.e currently playing on TV.
- (void)getList;
/// request to delete(removeAll) player list.
- (void)clearList;
/// remove specific video content from player list.
/// \param contentURL video URL
///
- (void)removeFromList:(NSURL * _Nonnull)contentURL;
/// Add video item to player list.
/// \param contentURL URL
///
/// \param title Title
///
/// \param thumbnailURL thumbnail URL
///
- (void)addToList:(NSURL * _Nonnull)contentURL title:(NSString * _Nonnull)title thumbnailURL:(NSURL * _Nonnull)thumbnailURL;
/// Add video item to player list.
/// \param arrayDictofData list data in form array of dictionary
///
- (void)addToList:(NSArray<NSDictionary<NSString *, id> *> * _Nonnull)arrayDictofData;
/// Notification of any data received from TV player
/// \param notification contains player queue event and action
///
- (void)onMessage:(NSNotification * _Null_unspecified)notification;
@end

/// Enum for Player list mode
/// Supported mode: repeatAll,repeatOff,repeatSingle
typedef SWIFT_ENUM(NSInteger, VideoRepeatMode, open) {
/// Repeat Off
  VideoRepeatModeRepeatOff = 0,
/// Repeat Single
  VideoRepeatModeRepeatSingle = 1,
/// repeat All
  VideoRepeatModeRepeatAll = 2,
};


/// The Video Player delegate protocol defines the event methods available for a Video.
SWIFT_PROTOCOL("_TtP9SmartView19VideoPlayerDelegate_")
@protocol VideoPlayerDelegate
@optional
/// event occurs on Buffering of Video Start.
- (void)onBufferingStart;
/// event occurs on Buffering of Video Complete.
- (void)onBufferingComplete;
/// event occurs asynchronously when video buffering is in progress.
/// \param progress current Buffer Progerss
///
- (void)onBufferingProgress:(NSInteger)progress;
/// event occurs continously when video streaming is going on.
/// \param progress current playing time of video.
///
- (void)onCurrentPlayTime:(NSInteger)progress;
/// event occurs when video streaming start.
/// \param duration total duration of video.
///
- (void)onStreamingStarted:(NSInteger)duration;
/// event occurs when video streaming completed.
- (void)onStreamCompleted;
/// event occurs when video is shared with TV for the first time.
- (void)onPlayerInitialized;
/// event occurs when different type of media is shared with TV.
/// (video is shared after photo/audio share)
/// \param playerType current player type (photo/audio/video)
///
- (void)onPlayerChange:(NSString * _Nonnull)playerType;
/// event occurs when paused video is played.
- (void)onPlay;
/// event occurs on video pause.
- (void)onPause;
/// event occurs on video stop.
- (void)onStop;
/// event occurs on fast forwarding the video.
- (void)onForward;
/// event occurs on rewind the video.
- (void)onRewind;
/// event occurs on Player mute.
- (void)onMute;
/// event occurs on Player unMute.
- (void)onUnMute;
/// event occurs when Player plays next content.
- (void)onNext;
/// event occurs when Player plays previous content.
- (void)onPrevious;
/// provides the status of play controls like volume, mute/unmute and mode of player like single or repeat all
/// \param volLevel player volume level
///
/// \param muteStatus player mute status
///
/// \param shuffleStatus player shuffle status
///
/// \param mode player mode single or repeat all
///
- (void)onControlStatus:(NSInteger)volLevel muteStatus:(BOOL)muteStatus mode:(NSString * _Nonnull)mode;
/// event occurs on  player volume change.
/// \param volLevel player volume to be set.
///
- (void)onVolumeChange:(NSInteger)volLevel;
/// event occurs on video addition in TV queue(player list).
/// \param enqueuedItem enqueued video item.
///
- (void)onAddToList:(NSDictionary<NSString *, id> * _Nonnull)enqueuedItem;
/// event occurs on video remove from TV queue(player list).
/// \param dequeuedItem dequeued video Item.
///
- (void)onRemoveFromList:(NSDictionary<NSString *, id> * _Nonnull)dequeuedItem;
/// event occurs on TV queue(player list) deletion.
- (void)onClearList;
/// event occurs when player list(TV queue) is recieved.
/// \param queueList play list of TV
///
- (void)onGetList:(NSDictionary<NSString *, id> * _Nonnull)queueList;
/// event occurs on player list repeat.
/// \param mode specify repeat all/repeat single audio
///
- (void)onRepeat:(NSString * _Nonnull)mode;
/// occurs when new audio is shared with TV.
/// \param currentItem current shared item.
///
- (void)onCurrentPlaying:(NSDictionary<NSString *, id> * _Nonnull)currentItem;
/// occurs when TV Application/widget goes into background.
- (void)onApplicationSuspend;
/// occurs when  TV Application/widget comes in foreground.
- (void)onApplicationResume;
/// occurs when error is occured in playing Audio
/// \param error eror details
///
- (void)onError:(NSError * _Nonnull)error;
@end

@class NSStream;

SWIFT_CLASS("_TtC9SmartView9WebSocket")
@interface WebSocket : NSObject <NSStreamDelegate>
/// Delegate for the stream methods. Processes incoming bytes
- (void)stream:(NSStream * _Nonnull)aStream handleEvent:(NSStreamEvent)eventCode;
- (nonnull instancetype)init SWIFT_UNAVAILABLE;
+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
@end

#if __has_attribute(external_source_symbol)
# pragma clang attribute pop
#endif
#pragma clang diagnostic pop
#endif

#endif
