#import <Foundation/Foundation.h>
#import <React/RCTBridgeModule.h>

@protocol RNHeapModuleDelegate <NSObject>

- (void)emitEvent:(NSString *)name data:(NSDictionary *)data;
- (void)handleInvocation:(nonnull NSString *)method args:(nonnull NSDictionary *)args resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject;
- (void)handleResult:(nonnull NSString *)callbackId data:(nonnull NSDictionary *)data error:(nonnull NSString *)error;

@end


@interface RNHeapModuleWrapper : NSObject <RNHeapModuleDelegate>
@property (nonatomic, weak) id<RNHeapModuleDelegate> delegate;

- (void)handleInvocation:(nonnull NSString *)method
                    args:(nonnull NSDictionary *)args
                 resolve:(nonnull RCTPromiseResolveBlock)resolve
                  reject:(nonnull RCTPromiseRejectBlock)reject;

- (void)handleResult:(nonnull NSString *)callbackId
                data:(nonnull NSDictionary *)data
               error:(nonnull NSString *)error;
@end
