//
//  XXGIAPVerifyManager.h
//  XXGIAPHelp
//
//  Created by kane on 2018/8/13.
//  Copyright © 2018年 kane. All rights reserved.
//

#import <Foundation/Foundation.h>

@class XXGIAPTransactionModel;
NS_ASSUME_NONNULL_BEGIN

@protocol XXGIAPVerifyManagerDelegate <NSObject>

- (void)startPaymentTransactionVerifingModel:(XXGIAPTransactionModel *)transactionModel;

@end


@interface XXGIAPVerifyManager : NSObject

/* 代理 */
@property (nonatomic,weak)id<XXGIAPVerifyManagerDelegate> delegate;

@property (nonatomic, assign) BOOL isVerifing;

/**
 初始化方法,指定钥匙串存储参数.

 @param keychainService 钥匙串Service
 @param keychainAccount 钥匙串Account
 @return XXGIAPVerifyManager
 */
- (instancetype)initWithKeychainService:(NSString *)keychainService keychainAccount:(NSString *)keychainAccount;
/**
 获取所有交易模型
 
 @return model
 */
- (NSMutableArray <XXGIAPTransactionModel *>*)fetchAllPaymentTransactionModel;

/**
 * 添加需要验证的 model.
 */
- (void)appendPaymentTransactionModel:(XXGIAPTransactionModel *)transactionModel;


/**
 开始支付凭证验证队列

 @param transactionModel 验证的model
 */
- (void)startPaymentTransactionVerifingModel:(XXGIAPTransactionModel *)transactionModel;



/**
 更新model状态

 @param transactionModel model
 */
- (void)updatePaymentTransactionModelStatus:(XXGIAPTransactionModel *)transactionModel;


/// 更新model检测次数
/// @param transactionModel model
-(void)updatePaymentTransactionCheckCount:(XXGIAPTransactionModel *)transactionModel;

/// 移除当前验证model
/// @param transactionModel model
- (void)finishPaymentTransactionVerifingModel:(XXGIAPTransactionModel *)transactionModel;


/**
 * 删除失败 model.
 */
- (void)deletePaymentTransactionModel:(XXGIAPTransactionModel *)transactionModel;



/**
⚠️ 删除所有已储存订单
 */
- (void)cleanAllModels;


/// 覆盖存档
/// @param models XXGIAPTransactionModels
- (void)savePaymentTransactionModels:(NSArray <XXGIAPTransactionModel *>*)models;
@end

NS_ASSUME_NONNULL_END
