#import <React/RCTBridgeModule.h>

@interface RCT_EXTERN_MODULE(GooglePlacesSdk, NSObject)

RCT_EXTERN_METHOD(initialize: (NSString *)apiKey)
RCT_EXTERN_METHOD(fetchPredictions: (NSString *)query
                  filterOptions: (NSDictionary *)filterOptions
                  resolver:(RCTPromiseResolveBlock)resolve
                  rejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(fetchPlaceByID: (NSString *)placeID
                  fields: (NSArray*)fields
                  resolver:(RCTPromiseResolveBlock)resolve
                  rejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(fetchPlaceByID: (NSString *)placeID
                  fields: (NSArray*)fields
                  resolver:(RCTPromiseResolveBlock)resolve
                  rejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(startNewSession:(RCTPromiseResolveBlock)resolve
                  rejecter:(RCTPromiseRejectBlock)reject)
RCT_EXTERN_METHOD(clearSession:(RCTPromiseResolveBlock)resolve
                  rejecter:(RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(geocode:(NSString)address resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)

RCT_EXTERN_METHOD(reverseGeocode:(double)lat lng:(double)lng resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)


+ (BOOL)requiresMainQueueSetup
{
  return NO;
}

@end
