package com.myfatoorahreactnative.sdkhelper;

import androidx.annotation.ColorRes;

import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.ReadableMap;

public interface IMFModule {
  @ReactMethod
  void init(String apiKey, String country, String environment, Promise promise);

  @ReactMethod
  void setUpActionBar(String toolBarTitle, @ColorRes int toolBarTitleColor,
                      @ColorRes int toolBarBackgroundColor, Boolean isShowToolBar, Promise promise);

  @ReactMethod
  void InitiatePayment(ReadableMap initiatePaymentRequest, String lang, Promise promise);


  @ReactMethod
  void SendPayment(ReadableMap sendPaymentRequest, String lang, Promise promise);

  @ReactMethod
  void GetPaymentStatus(ReadableMap getPaymentStatusRequest, String lang, Promise promise);

  @ReactMethod
  void ExecutePayment(ReadableMap executePaymentRequest, String lang, Promise promise);

  @ReactMethod
  void ExecutePaymentWithSavedToken(ReadableMap savedTokenRequest, String lang, Promise promise);

  @ReactMethod
  void ExecuteDirectPayment(ReadableMap directPaymentRequest, String lang, Promise promise);//MFDirectPaymentResponse

  @ReactMethod
  void cancelToken(String token, String lang, Promise promise);//Boolean

  @ReactMethod
  void cancelRecurringPayment(String recurringId, String lang, Promise promise);

  @ReactMethod
  void InitiateSession(ReadableMap initiateSessionRequest, Promise promise);

  @ReactMethod
  void LoadCardView(ReadableMap initiateSessionResponse, Promise promise);

  @ReactMethod
  void Validate(String currency, Promise promise);

  @ReactMethod
  void Submit(String currency, Promise promise);

  @ReactMethod
  void Pay(ReadableMap executePaymentRequest, String lang, String currency, Promise promise);

  @ReactMethod
  void SetupGooglePayHelper(String sessionId, ReadableMap googlePayRequest, Promise promise);

  @ReactMethod
  void SetupGooglePayHelperAuto(String sessionId, ReadableMap googlePayRequest, Promise promise);

  @ReactMethod
  void SetupGooglePayHelperManual(String sessionId, ReadableMap googlePayRequest, Promise promise);

  @ReactMethod
  void ExecutePaymentWithGooglePay(ReadableMap executePaymentRequest, String lang, Promise promise);

  @ReactMethod
  void SetupGooglePayTokenHelper(ReadableMap googlePayRequest, Promise promise);

  @ReactMethod
  void GooglePayTokenConfig(ReadableMap googlePayRequest, Promise promise);

  @ReactMethod
  void GooglePayOpenSheet(Promise promise);

  @ReactMethod
  void addListener(String eventName);

  @ReactMethod
  void removeListeners(Integer count);
}
// void executeRecurringPayment(MFExecutePaymentRequest request, MFCardInfo mfCardInfo, MFRecurringType mfRecurringType, String lang, Promise promise);//(kotlin.String, com.myfatoorah.sdk.views.MFResult< .MFDirectPaymentResponse>) -> kotlin.Unit);
// void executeRecurringPayment(MFExecutePaymentRequest request, MFCardInfo mfCardInfo, int intervalDays, String lang, Promise promise);//(kotlin.String, com.myfatoorah.sdk.views.MFResult< .MFDirectPaymentResponse>) -> kotlin.Unit);
