//
//  MBIMUpdateQueue.h
//  kordophoned
//
//  Created by James Magahern on 11/16/18.
//  Copyright © 2018 James Magahern. All rights reserved.
//

#import "IMCore_ClassDump.h"
#import "IMFoundation_ClassDump.h"

NS_ASSUME_NONNULL_BEGIN
@class GCDAsyncSocket;
@class HTTPMessage;
@class WebSocket;

@interface MBIMUpdateItem : NSObject
@property (nonatomic, strong) IMChat *changedChat;
@property (nonatomic, strong) IMMessage *addedMessage;

- (NSDictionary *)dictionaryRepresentation;
@end

typedef void (^MBIMUpdateConsumer)(NSArray<MBIMUpdateItem *> *items);

@interface MBIMUpdateQueue : NSObject

+ (instancetype)sharedInstance;

- (void)addPollingConsumer:(MBIMUpdateConsumer)consumer withLastSyncedMessageSeq:(NSInteger)messageSeq;
- (void)removePollingConsumer:(MBIMUpdateConsumer)consumer;

- (void)enqueueUpdateItem:(MBIMUpdateItem *)item;

- (WebSocket *)vendUpdateWebSocketConsumerForRequest:(HTTPMessage *)request socket:(GCDAsyncSocket *)socket;

@end

NS_ASSUME_NONNULL_END
