//
//  InkePlatformConfig.h
//  InkePlatform
//
//  Created by 北京蜜莱坞网络科技有限公司 on 16/6/12.
//  Copyright © 2016年 北京蜜莱坞网络科技有限公司. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

#define INKE_UNAVAILABLE(x) __attribute__((unavailable(x)))

#if __has_feature(nullability)
#define INKE_NONNULL __nonnull
#define INKE_NULLABLE __nullable
#define INKE_START_NONNULL _Pragma("clang assume_nonnull begin")
#define INKE_END_NONNULL _Pragma("clang assume_nonnull end")
#else
#define INKE_NONNULL
#define INKE_NULLABLE
#define INKE_START_NONNULL
#define INKE_END_NONNULL
#endif

@class InkeOrder;
@class InkeUserInfo;

extern NSString *const INKE_NONNULL InkeSharePlatformWeibo;
extern NSString *const INKE_NONNULL InkeSharePlatformWechat;
extern NSString *const INKE_NONNULL InkeSharePlatformMoment;
extern NSString *const INKE_NONNULL InkeSharePlatformQQ;
extern NSString *const INKE_NONNULL InkeSharePlatformQQZone;

/**
 *  支付状态
 */
typedef NS_ENUM(NSInteger, INKEPAYSTATUS) {
  /**
   *  支付成功
   */
  INKEPAY_SUCCESS,
  /**
   *  支付失败
   */
  INKEPAY_FAIL,
};

typedef void (^LOGINTRIGGERCALLBACK)(BOOL isSuccess, InkeUserInfo *INKE_NONNULL user);

/**
 *  Inke平台代理
 */
@protocol InkePlatformDelegate<NSObject>

@optional

#pragma mark - Call Back
/**
 *  支付触发
 *
 *  @param order                 订单参数
 *  @param currentViewController 当前所在的ViewController，方便push，present
 */
- (void)payAction:(InkeOrder *INKE_NONNULL)order currentViewController:(UIViewController *INKE_NONNULL)currentViewController;

/**
 *  未登录用户触发登陆
 *
 */
- (void)loginTrigger:(UIViewController *INKE_NONNULL)currentViewController;

/**
 *  支付宝实名认证回调
 *
 */
- (void)aliPayTrigger:(NSString *INKE_NONNULL)dataString;

/**
 *  分享触发
 *
 *  @param platform 分享平台 InkeSharePlatformWeibo 等
 *  @param image    图片
 *  @param content  content
 */
- (void)shareAction:(NSString *INKE_NONNULL)platform
              title:(NSString *INKE_NULLABLE)title
              image:(UIImage *INKE_NULLABLE)image
            content:(NSString *INKE_NONNULL)content
                url:(NSString *INKE_NONNULL)url;

/**
 *  开始直播回调
 *
 *  @param liveInfo 直播信息 直播间id：liveid 、用户uid ：third_uid
 */
- (void)createLivingTrigger:(NSDictionary *INKE_NONNULL)liveInfo;

/**
 *  结束直播回调
 *
 *  @param liveInfo 直播信息 直播间id：liveid 、用户uid ：third_uid
 */
- (void)stopLivingTrigger:(NSDictionary *INKE_NONNULL)liveInfo;

/**
 *  直播结束回调
 *
 *  @param liveInfo 直播信息 直播间id：liveid 、用户uid ：third_uid
 */
- (void)liveOverTrigger:(NSDictionary *INKE_NONNULL)liveInfo;

/**
 *  点击直播间链接回调
 *
 *  @param liveInfo 直播信息 直播间id：liveid
 */
- (void)didClickRoomLink:(NSDictionary *INKE_NONNULL)liveInfo;

#pragma mark - Config
/**
 *  是否接入微博分享
 *
 */
- (BOOL)canShareWeibo;

/**
 *  是否接入微信分享
 *
 */
- (BOOL)canShareWechat;

/**
 *  是否接入QQ分享
 *
 */
- (BOOL)canShareQQ;

/**
 *  配置导航栏TintColor
 *
 */
- (UIColor *INKE_NULLABLE)navigationBarTintColor;

/**
 *  配置导航栏BarTintColor
 *
 */
- (UIColor *INKE_NULLABLE)navigationBarBarTintColor;

/**
 *  配置导航栏TitleAttribute
 *
 */
- (NSDictionary *INKE_NULLABLE)navigationBarTitleAttribute;

/**
 *  能否进行支付宝实名认证
 *
 */
- (BOOL)canAliPayAuth;

/**
 *  是否跳过直播准备页面 如用户自己实现直播准备页面可选择跳过映客直播准备页
 */
- (BOOL)skipLivePerpareView;

@end

/**
 *  用户信息
 */
@interface InkeUserInfo : NSObject
/**
 *  id
 */
@property(nonatomic, copy) NSString *INKE_NONNULL userId;
/**
 *  昵称
 */
@property(nonatomic, copy) NSString *INKE_NONNULL nickName;
/**
 *  头像url
 */
@property(nonatomic, copy) NSString *INKE_NONNULL portrait;
/**
 *  第三方token
 */
@property(nonatomic, copy) NSString *INKE_NONNULL uToken;
/**
 *  性别 0 女，1男。
 */
@property(nonatomic, assign) NSInteger gender;

@end

/**
 *  订单信息
 */
@interface InkeOrder : NSObject
/**
 *  订单号
 */
@property(nonatomic, copy) NSString *INKE_NONNULL orderId;

// 调起接入方App支付功能所需的信息，json字符串格式
@property(nonatomic, copy) NSString *INKE_NONNULL callString;

/**
 *  数量
 */
@property(nonatomic, assign) NSInteger amount;

@end

/**
 *  订单回调信息
 */
@interface InkeOrderResult : NSObject

/**
 *  订单号
 */
@property(nonatomic, copy) NSString *INKE_NONNULL orderId;

/**
 *  错误码：
 *  9000 - 订单支付成功
 *  4000 - 订单支付失败
 *  6001 - 用户中途取消
 *  6002 - 网络连接出错
 */
@property(nonatomic, assign) NSInteger errCode;

/**
 *  错误信息
 */
@property(nonatomic, copy) NSString *INKE_NULLABLE errMsg;

@end
