//
//  CIDPrinter.h
//  CIDPrinterLibrary
//
//  Created by Uwe Hoppe on 17.11.21.
//

#ifndef CIDPrinter_h
#define CIDPrinter_h
#import "PrinterLibraryEvent.h"
#import "Device.h"

@interface CIDPrinter: NSObject <PrinterLibraryListener>
@property id<PrinterLibraryListener> _listener;

+(CIDPrinter*) getSharedObject;
+(NSArray<NSString*>*) getRequiredPermissions;

-(PrinterLibraryEvent*) initialize;
-(void) closeSharedlibrary;
-(NSUInteger) activatePluginLicense:(NSString*)key customer:(NSString*)customer;
-(void) activateLicense:(NSString*)licenseKey customerID:(NSString*)customerID;
-(void) addListener:(id<PrinterLibraryListener>)listener;
-(void) removeListener:(id<PrinterLibraryListener>)listener;
-(void) enableBluetoothPrinting:(BOOL)enable;
-(NSDictionary<NSString*, Device*>*) getPairedDevices;
-(void) discoverDevices;
-(void) notifyListeners:(PrinterLibraryEvent*)evt;
-(void) connectToPreferredPrinter:(NSString*)address;
-(void) disconnectPrinter;
-(void) getStatus;
-(void) enableDispensingMode:(BOOL)enable;
-(void) setupMediaSize:(NSUInteger)width height:(NSUInteger)height;
-(void) print:(NSData*)data isnative:(BOOL)_isnative;
-(void) debugPrint:(NSString*)labelfile;
-(void) print:(NSString*)labelfile;
-(void) print:(NSString*)labelfile params:(NSDictionary*)params;
-(void) printReceipt:(NSString*)labelfile params:(NSDictionary*)params;
-(void) print:(NSString*)labelfile strings:(NSArray*)params;

@end

#endif /* CIDPrinter_h */
