#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

typedef NS_ENUM(NSInteger, RTKLogLevel) {
    RTKLogLevelVerbose = 0,
    RTKLogLevelDebug = 1,
    RTKLogLevelInfo = 2,
    RTKLogLevelWarning = 3,
    RTKLogLevelError = 4,
    RTKLogLevelNone = 5
};

@interface RTKLogger : NSObject

/// Shared instance for global logging configuration
+ (instancetype)sharedInstance;

/// Enable or disable logging globally
@property (nonatomic, assign) BOOL loggingEnabled;

/// Set minimum log level (default: RTKLogLevelDebug)
@property (nonatomic, assign) RTKLogLevel minimumLogLevel;

/// Log a verbose message
+ (void)verbose:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);

/// Log a debug message
+ (void)debug:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);

/// Log an info message
+ (void)info:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);

/// Log a warning message
+ (void)warning:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);

/// Log an error message
+ (void)error:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);

/// Log with specific level
+ (void)log:(RTKLogLevel)level format:(NSString *)format, ... NS_FORMAT_FUNCTION(2,3);

/// Enable logging for RealtimeKit module
+ (void)enable;

/// Disable logging for RealtimeKit module
+ (void)disable;

@end

NS_ASSUME_NONNULL_END
