//
//  PrinterLibraryEvent.h
//  CIDPrinterLibrary
//
//  Created by Uwe Hoppe on 30.11.21.
//

#ifndef PrinterLibraryEvent_h
#define PrinterLibraryEvent_h
#import "ResultClass.h"

@interface PrinterLibraryEvent : NSObject

typedef NS_ENUM(NSUInteger, EventType) {
    SUCCESS = 0,
    NOTIFY = 1,
    FAILED = 2
};

typedef NS_ENUM(NSUInteger, LibraryActionType) {
    NONE = 0,
    INITIALIZE = 1,
    BLUETOOTH_INITIALIZE = 2,
    BLUETOOTH_ENABLE = 3,
    BLUETOOTH_DISABLE = 4,
    DISCOVER_START = 5,
    DISCOVER_DETECT = 6,
    DISCOVER_FINISH = 7,
    CONNECT = 8,
    DISCONNECT = 9,
    PRINT = 10,
    STATUS = 11,
    CONFIGURE = 12,
    BLUETOOTH_TURNED_OFF = 13,
    BLUETOOTH_TURNED_ON = 14,
    LICENSE_ACTIVATION = 15
};

-(id)initWithMessage:(EventType)type message:(NSString*)message error:(int)error;
-(id)initWithResultClass:(EventType)type action:(LibraryActionType)action data:(ResultClass*)data;
-(id)initWithActionAndMessage:(EventType)type action:(LibraryActionType)action message:(NSString*)message;
-(id)initWithActionAndResultClass:(EventType)type action:(LibraryActionType)action message:(NSString*)message data:(ResultClass*)data;
-(NSArray*)getJSONArray;
-(NSDictionary*)getJSONObject;

-(EventType)getEventType;
-(LibraryActionType)getAction;
-(ResultClass*)getData;
-(int)getError;
-(NSString*)getMessage;
-(void)setMessage:(NSString*)value;

@end

@protocol PrinterLibraryListener <NSObject>
-(void)onPrinterLibraryEvent:(PrinterLibraryEvent*) event;
@end

#endif /* PrinterLibraryEvent_h */
