#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

typedef void(^ATSendSignalResultBlock)(id _Nullable result);

/// Compatible with Flutter’s old ATSendSignalManager macro name. All existing Manager / Delegate directly use
/// `[SendEventManager sendMethod:arguments:result:]` can be forwarded to ATReactNativeEventEmitter internally.
#define SendEventManager [ATSendSignalManager sharedManager]

@interface ATSendSignalManager : NSObject

+ (instancetype)sharedManager;

- (void)sendMethod:(NSString *)methodName
         arguments:(nullable id)arguments
            result:(ATSendSignalResultBlock _Nullable)resultBlock;

@end

NS_ASSUME_NONNULL_END
