/**
 * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
 *
 * Do not edit this file as changes may cause incorrect behavior and will be lost
 * once the code is regenerated.
 *
 * @generated by codegen project: GenerateModuleObjCpp
 *
 * We create an umbrella header (and corresponding implementation) here since
 * Cxx compilation in BUCK has a limitation: source-code producing genrule()s
 * must have a single output. More files => more genrule()s => slower builds.
 */

#ifndef __cplusplus
#error This file must be compiled as Obj-C++. If you are importing it, you must change your file extension to .mm.
#endif

// Avoid multiple includes of RNSimcardInfoSpec symbols
#ifndef RNSimcardInfoSpec_H
#define RNSimcardInfoSpec_H

#import <Foundation/Foundation.h>
#import <RCTRequired/RCTRequired.h>
#import <RCTTypeSafety/RCTConvertHelpers.h>
#import <RCTTypeSafety/RCTTypedModuleConstants.h>
#import <React/RCTBridgeModule.h>
#import <React/RCTCxxConvert.h>
#import <React/RCTManagedPointer.h>
#import <ReactCommon/RCTTurboModule.h>
#import <optional>
#import <vector>


@protocol NativeSimcardInfoSpec <RCTBridgeModule, RCTTurboModule>

- (NSArray<NSNumber *> *)getSubscriptionIds;
- (NSNumber *)getSubscriptionId:(double)simSlotIndex;
- (NSNumber *)getActiveDataSubscriptionId;
- (NSDictionary *)getActiveSubscriptionInfo:(double)subscriberId;
- (NSNumber *)getActiveSubscriptionInfoCount;
- (NSDictionary *)getActiveSubscriptionInfoForSimSlotIndex:(double)simSlotIndex;
- (NSArray<NSDictionary *> *)getActiveSubscriptionInfoList;
- (NSArray<NSDictionary *> *)getAllSubscriptionInfoList;
- (NSArray<NSDictionary *> *)getCompleteActiveSubscriptionInfoList;
- (NSNumber *)getDefaultDataSubscriptionId;
- (NSNumber *)getDefaultSmsSubscriptionId;
- (NSNumber *)getDefaultSubscriptionId;
- (NSNumber *)getSlotIndex:(double)subscriberId;
- (NSNumber *)getNoOfSIMSlotAvailable;
- (NSNumber *)getSignalStrength:(double)subscriberId;
- (NSString *)getPhoneNumber:(double)subscriberId;
- (NSArray<NSString *> *)getAllPhoneNumbers;
- (NSNumber *)getSubscriberIdForPhoneNumber:(NSString *)phoneNumber;
- (NSNumber *)isActiveSubscriptionId:(double)subscriberId;
- (NSNumber *)isNetworkRoaming:(double)subscriberId;
- (NSNumber *)isAirplaneMode;
- (NSNumber *)isESIM:(double)subscriberId;
- (NSNumber *)isMobileDataEnabled:(double)subscriberId;
- (void)addOnAirplaneChangeListener;
- (void)addOnSimCardStateChangeListener;
- (void)removeOnAirplaneChangeListener;
- (void)removeOnSimCardStateChangeListener;

@end

@interface NativeSimcardInfoSpecBase : NSObject {
@protected
facebook::react::EventEmitterCallback _eventEmitterCallback;
}
- (void)setEventEmitterCallback:(EventEmitterCallbackWrapper *)eventEmitterCallbackWrapper;

- (void)emitOnAirplaneModeChange:(BOOL)value;
- (void)emitOnSIMCardStateChange:(NSArray<id<NSObject>> *)value;
@end

namespace facebook::react {
  /**
   * ObjC++ class for module 'NativeSimcardInfo'
   */
  class JSI_EXPORT NativeSimcardInfoSpecJSI : public ObjCTurboModule {
  public:
    NativeSimcardInfoSpecJSI(const ObjCTurboModule::InitParams &params);
  };
} // namespace facebook::react

#endif // RNSimcardInfoSpec_H
