//
//  WorkspotSDK.h
//  WorkspotSDK
//
//  Created by Abhijeet Kumar on 12/30/13.
//  Copyright (c) 2013 Workspot. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <WorkspotSDK/WorkspotSDK_Headers.h>

/**
 * @typedef WSCustomLogBlock
 *
 * Type definition for custom logging callbacks
 */
typedef void (^WSCustomLogBlock)(NSString *fmt, ...);

/**
 * General entry point where you do ncessary initializations.
 */
@interface WorkspotSDK : NSObject

/**
 * Shared Instance for WorkspotSDK
 */
+ (instancetype) sharedInstance;

/**
 * Knob to enable or disable WorkspotSDK debug logs. It is disabled by default.
 *
 * If this property is set, these logs are outputted to console using `NSLog(...)`
 * by default. You can override this by registering your own callback in property
 * #debugLogBlock
 *
 * @note 
 * Enable it only for WorkspotSDK troubleshooting purposes.
 */
@property (nonatomic, assign, getter=isDebugLogEnabled) BOOL debugLogEnabled;
    
/**
 * Knob to enable or disable WorkspotSDK error logs. It is enabled by default.
 *
 * These logs are outputted to console using `NSLog(...)` by default. You
 * can override this by registering your own callback in property #errorLogBlock
 * 
 * @note
 * Please contact us at support@workspot.com should you continue to see error
 * logs coming from Workspot SDK.
 */
@property (nonatomic, assign, getter=isErrorLogEnabled) BOOL errorLogEnabled;

/**
 * Block for custom debug logs.
 *
 * Once this block is set, you will receive callback notifications when SDK 
 * tries to log debug information. You can print this information to the 
 * console or log it into a file. This information will be needed by Workspot 
 * development team when troubleshooting Workspot SDK.
 * 
 * @note This callback will happen on a background thread.
 */
@property (nonatomic, strong) WSCustomLogBlock debugLogBlock;

/**
 * Block for custom error logs.
 *
 * Once this block is set, you will receive callback notifications when SDK
 * tries to log information for error scenarios. You can print this information to 
 * the console or log it into a file. This information will be needed by Workspot
 * development team when troubleshooting Workspot SDK.
 *
 * @note This callback will happen on a background thread.
 */
@property (nonatomic, strong) WSCustomLogBlock errorLogBlock;

@end
