///
/// NitroIap-Swift-Cxx-Umbrella.hpp
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///

#pragma once

// Forward declarations of C++ defined types
// Forward declaration of `AdvancedCommerceInfoIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct AdvancedCommerceInfoIOS; }
// Forward declaration of `AdvancedCommerceItemDetailsIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct AdvancedCommerceItemDetailsIOS; }
// Forward declaration of `AdvancedCommerceItemIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct AdvancedCommerceItemIOS; }
// Forward declaration of `AdvancedCommerceRefundIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct AdvancedCommerceRefundIOS; }
// Forward declaration of `AlternativeBillingModeAndroid` to properly resolve imports.
namespace margelo::nitro::iap { enum class AlternativeBillingModeAndroid; }
// Forward declaration of `AndroidSubscriptionOfferInput` to properly resolve imports.
namespace margelo::nitro::iap { struct AndroidSubscriptionOfferInput; }
// Forward declaration of `BillingProgramAndroid` to properly resolve imports.
namespace margelo::nitro::iap { enum class BillingProgramAndroid; }
// Forward declaration of `DeveloperProvidedBillingDetailsAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct DeveloperProvidedBillingDetailsAndroid; }
// Forward declaration of `ExternalLinkLaunchModeAndroid` to properly resolve imports.
namespace margelo::nitro::iap { enum class ExternalLinkLaunchModeAndroid; }
// Forward declaration of `ExternalLinkTypeAndroid` to properly resolve imports.
namespace margelo::nitro::iap { enum class ExternalLinkTypeAndroid; }
// Forward declaration of `ExternalPurchaseCustomLinkNoticeResultIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct ExternalPurchaseCustomLinkNoticeResultIOS; }
// Forward declaration of `ExternalPurchaseCustomLinkNoticeTypeIOS` to properly resolve imports.
namespace margelo::nitro::iap { enum class ExternalPurchaseCustomLinkNoticeTypeIOS; }
// Forward declaration of `ExternalPurchaseCustomLinkTokenResultIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct ExternalPurchaseCustomLinkTokenResultIOS; }
// Forward declaration of `ExternalPurchaseCustomLinkTokenTypeIOS` to properly resolve imports.
namespace margelo::nitro::iap { enum class ExternalPurchaseCustomLinkTokenTypeIOS; }
// Forward declaration of `ExternalPurchaseLinkResultIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct ExternalPurchaseLinkResultIOS; }
// Forward declaration of `ExternalPurchaseNoticeAction` to properly resolve imports.
namespace margelo::nitro::iap { enum class ExternalPurchaseNoticeAction; }
// Forward declaration of `ExternalPurchaseNoticeResultIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct ExternalPurchaseNoticeResultIOS; }
// Forward declaration of `HybridRnIapSpec` to properly resolve imports.
namespace margelo::nitro::iap { class HybridRnIapSpec; }
// Forward declaration of `IapPlatform` to properly resolve imports.
namespace margelo::nitro::iap { enum class IapPlatform; }
// Forward declaration of `IapStore` to properly resolve imports.
namespace margelo::nitro::iap { enum class IapStore; }
// Forward declaration of `IapkitPurchaseState` to properly resolve imports.
namespace margelo::nitro::iap { enum class IapkitPurchaseState; }
// Forward declaration of `InitConnectionConfig` to properly resolve imports.
namespace margelo::nitro::iap { struct InitConnectionConfig; }
// Forward declaration of `NitroActiveSubscription` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroActiveSubscription; }
// Forward declaration of `NitroAvailablePurchasesAndroidOptions` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroAvailablePurchasesAndroidOptions; }
// Forward declaration of `NitroAvailablePurchasesAndroidType` to properly resolve imports.
namespace margelo::nitro::iap { enum class NitroAvailablePurchasesAndroidType; }
// Forward declaration of `NitroAvailablePurchasesIosOptions` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroAvailablePurchasesIosOptions; }
// Forward declaration of `NitroAvailablePurchasesOptions` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroAvailablePurchasesOptions; }
// Forward declaration of `NitroBillingProgramAvailabilityResultAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroBillingProgramAvailabilityResultAndroid; }
// Forward declaration of `NitroBillingProgramReportingDetailsAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroBillingProgramReportingDetailsAndroid; }
// Forward declaration of `NitroDeepLinkOptionsAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroDeepLinkOptionsAndroid; }
// Forward declaration of `NitroDiscountAmountAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroDiscountAmountAndroid; }
// Forward declaration of `NitroDiscountDisplayInfoAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroDiscountDisplayInfoAndroid; }
// Forward declaration of `NitroFinishTransactionAndroidParams` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroFinishTransactionAndroidParams; }
// Forward declaration of `NitroFinishTransactionIosParams` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroFinishTransactionIosParams; }
// Forward declaration of `NitroFinishTransactionParams` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroFinishTransactionParams; }
// Forward declaration of `NitroLaunchExternalLinkParamsAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroLaunchExternalLinkParamsAndroid; }
// Forward declaration of `NitroLimitedQuantityInfoAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroLimitedQuantityInfoAndroid; }
// Forward declaration of `NitroOneTimePurchaseOfferDetail` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroOneTimePurchaseOfferDetail; }
// Forward declaration of `NitroPreorderDetailsAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroPreorderDetailsAndroid; }
// Forward declaration of `NitroProduct` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroProduct; }
// Forward declaration of `NitroPurchaseRequest` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroPurchaseRequest; }
// Forward declaration of `NitroPurchaseResult` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroPurchaseResult; }
// Forward declaration of `NitroPurchase` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroPurchase; }
// Forward declaration of `NitroReceiptValidationAppleOptions` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroReceiptValidationAppleOptions; }
// Forward declaration of `NitroReceiptValidationGoogleOptions` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroReceiptValidationGoogleOptions; }
// Forward declaration of `NitroReceiptValidationHorizonOptions` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroReceiptValidationHorizonOptions; }
// Forward declaration of `NitroReceiptValidationParams` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroReceiptValidationParams; }
// Forward declaration of `NitroReceiptValidationResultAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroReceiptValidationResultAndroid; }
// Forward declaration of `NitroReceiptValidationResultIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroReceiptValidationResultIOS; }
// Forward declaration of `NitroRenewalInfoIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroRenewalInfoIOS; }
// Forward declaration of `NitroRentalDetailsAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroRentalDetailsAndroid; }
// Forward declaration of `NitroRequestPurchaseAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroRequestPurchaseAndroid; }
// Forward declaration of `NitroRequestPurchaseIos` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroRequestPurchaseIos; }
// Forward declaration of `NitroSubscriptionRenewalInfo` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroSubscriptionRenewalInfo; }
// Forward declaration of `NitroSubscriptionStatus` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroSubscriptionStatus; }
// Forward declaration of `NitroValidTimeWindowAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroValidTimeWindowAndroid; }
// Forward declaration of `NitroVerifyPurchaseWithIapkitAppleProps` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroVerifyPurchaseWithIapkitAppleProps; }
// Forward declaration of `NitroVerifyPurchaseWithIapkitGoogleProps` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroVerifyPurchaseWithIapkitGoogleProps; }
// Forward declaration of `NitroVerifyPurchaseWithIapkitProps` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroVerifyPurchaseWithIapkitProps; }
// Forward declaration of `NitroVerifyPurchaseWithIapkitResult` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroVerifyPurchaseWithIapkitResult; }
// Forward declaration of `NitroVerifyPurchaseWithProviderError` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroVerifyPurchaseWithProviderError; }
// Forward declaration of `NitroVerifyPurchaseWithProviderProps` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroVerifyPurchaseWithProviderProps; }
// Forward declaration of `NitroVerifyPurchaseWithProviderResult` to properly resolve imports.
namespace margelo::nitro::iap { struct NitroVerifyPurchaseWithProviderResult; }
// Forward declaration of `PaymentModeIOS` to properly resolve imports.
namespace margelo::nitro::iap { enum class PaymentModeIOS; }
// Forward declaration of `PendingPurchaseUpdateAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct PendingPurchaseUpdateAndroid; }
// Forward declaration of `PromotionalOfferJwsInputIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct PromotionalOfferJwsInputIOS; }
// Forward declaration of `PurchaseAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct PurchaseAndroid; }
// Forward declaration of `PurchaseIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct PurchaseIOS; }
// Forward declaration of `PurchaseOfferIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct PurchaseOfferIOS; }
// Forward declaration of `PurchaseState` to properly resolve imports.
namespace margelo::nitro::iap { enum class PurchaseState; }
// Forward declaration of `PurchaseUpdatedListenerOptions` to properly resolve imports.
namespace margelo::nitro::iap { struct PurchaseUpdatedListenerOptions; }
// Forward declaration of `PurchaseVerificationProvider` to properly resolve imports.
namespace margelo::nitro::iap { enum class PurchaseVerificationProvider; }
// Forward declaration of `RenewalInfoIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct RenewalInfoIOS; }
// Forward declaration of `SubscriptionProductReplacementParamsAndroid` to properly resolve imports.
namespace margelo::nitro::iap { struct SubscriptionProductReplacementParamsAndroid; }
// Forward declaration of `SubscriptionReplacementModeAndroid` to properly resolve imports.
namespace margelo::nitro::iap { enum class SubscriptionReplacementModeAndroid; }
// Forward declaration of `UserChoiceBillingDetails` to properly resolve imports.
namespace margelo::nitro::iap { struct UserChoiceBillingDetails; }
// Forward declaration of `WinBackOfferInputIOS` to properly resolve imports.
namespace margelo::nitro::iap { struct WinBackOfferInputIOS; }

// Include C++ defined types
#include "AdvancedCommerceInfoIOS.hpp"
#include "AdvancedCommerceItemDetailsIOS.hpp"
#include "AdvancedCommerceItemIOS.hpp"
#include "AdvancedCommerceRefundIOS.hpp"
#include "AlternativeBillingModeAndroid.hpp"
#include "AndroidSubscriptionOfferInput.hpp"
#include "BillingProgramAndroid.hpp"
#include "DeveloperProvidedBillingDetailsAndroid.hpp"
#include "ExternalLinkLaunchModeAndroid.hpp"
#include "ExternalLinkTypeAndroid.hpp"
#include "ExternalPurchaseCustomLinkNoticeResultIOS.hpp"
#include "ExternalPurchaseCustomLinkNoticeTypeIOS.hpp"
#include "ExternalPurchaseCustomLinkTokenResultIOS.hpp"
#include "ExternalPurchaseCustomLinkTokenTypeIOS.hpp"
#include "ExternalPurchaseLinkResultIOS.hpp"
#include "ExternalPurchaseNoticeAction.hpp"
#include "ExternalPurchaseNoticeResultIOS.hpp"
#include "HybridRnIapSpec.hpp"
#include "IapPlatform.hpp"
#include "IapStore.hpp"
#include "IapkitPurchaseState.hpp"
#include "InitConnectionConfig.hpp"
#include "NitroActiveSubscription.hpp"
#include "NitroAvailablePurchasesAndroidOptions.hpp"
#include "NitroAvailablePurchasesAndroidType.hpp"
#include "NitroAvailablePurchasesIosOptions.hpp"
#include "NitroAvailablePurchasesOptions.hpp"
#include "NitroBillingProgramAvailabilityResultAndroid.hpp"
#include "NitroBillingProgramReportingDetailsAndroid.hpp"
#include "NitroDeepLinkOptionsAndroid.hpp"
#include "NitroDiscountAmountAndroid.hpp"
#include "NitroDiscountDisplayInfoAndroid.hpp"
#include "NitroFinishTransactionAndroidParams.hpp"
#include "NitroFinishTransactionIosParams.hpp"
#include "NitroFinishTransactionParams.hpp"
#include "NitroLaunchExternalLinkParamsAndroid.hpp"
#include "NitroLimitedQuantityInfoAndroid.hpp"
#include "NitroOneTimePurchaseOfferDetail.hpp"
#include "NitroPreorderDetailsAndroid.hpp"
#include "NitroProduct.hpp"
#include "NitroPurchase.hpp"
#include "NitroPurchaseRequest.hpp"
#include "NitroPurchaseResult.hpp"
#include "NitroReceiptValidationAppleOptions.hpp"
#include "NitroReceiptValidationGoogleOptions.hpp"
#include "NitroReceiptValidationHorizonOptions.hpp"
#include "NitroReceiptValidationParams.hpp"
#include "NitroReceiptValidationResultAndroid.hpp"
#include "NitroReceiptValidationResultIOS.hpp"
#include "NitroRenewalInfoIOS.hpp"
#include "NitroRentalDetailsAndroid.hpp"
#include "NitroRequestPurchaseAndroid.hpp"
#include "NitroRequestPurchaseIos.hpp"
#include "NitroSubscriptionRenewalInfo.hpp"
#include "NitroSubscriptionStatus.hpp"
#include "NitroValidTimeWindowAndroid.hpp"
#include "NitroVerifyPurchaseWithIapkitAppleProps.hpp"
#include "NitroVerifyPurchaseWithIapkitGoogleProps.hpp"
#include "NitroVerifyPurchaseWithIapkitProps.hpp"
#include "NitroVerifyPurchaseWithIapkitResult.hpp"
#include "NitroVerifyPurchaseWithProviderError.hpp"
#include "NitroVerifyPurchaseWithProviderProps.hpp"
#include "NitroVerifyPurchaseWithProviderResult.hpp"
#include "PaymentModeIOS.hpp"
#include "PendingPurchaseUpdateAndroid.hpp"
#include "PromotionalOfferJwsInputIOS.hpp"
#include "PurchaseAndroid.hpp"
#include "PurchaseIOS.hpp"
#include "PurchaseOfferIOS.hpp"
#include "PurchaseState.hpp"
#include "PurchaseUpdatedListenerOptions.hpp"
#include "PurchaseVerificationProvider.hpp"
#include "RenewalInfoIOS.hpp"
#include "SubscriptionProductReplacementParamsAndroid.hpp"
#include "SubscriptionReplacementModeAndroid.hpp"
#include "UserChoiceBillingDetails.hpp"
#include "WinBackOfferInputIOS.hpp"
#include <NitroModules/Null.hpp>
#include <NitroModules/Promise.hpp>
#include <NitroModules/Result.hpp>
#include <exception>
#include <functional>
#include <memory>
#include <optional>
#include <string>
#include <unordered_map>
#include <variant>
#include <vector>

// C++ helpers for Swift
#include "NitroIap-Swift-Cxx-Bridge.hpp"

// Common C++ types used in Swift
#include <NitroModules/ArrayBufferHolder.hpp>
#include <NitroModules/AnyMapUtils.hpp>
#include <NitroModules/RuntimeError.hpp>
#include <NitroModules/DateToChronoDate.hpp>

// Forward declarations of Swift defined types
// Forward declaration of `HybridRnIapSpec_cxx` to properly resolve imports.
namespace NitroIap { class HybridRnIapSpec_cxx; }

// Include Swift defined types
#if __has_include("NitroIap-Swift.h")
// This header is generated by Xcode/Swift on every app build.
// If it cannot be found, make sure the Swift module's name (= podspec name) is actually "NitroIap".
#include "NitroIap-Swift.h"
// Same as above, but used when building with frameworks (`use_frameworks`)
#elif __has_include(<NitroIap/NitroIap-Swift.h>)
#include <NitroIap/NitroIap-Swift.h>
#else
#error NitroIap's autogenerated Swift header cannot be found! Make sure the Swift module's name (= podspec name) is actually "NitroIap", and try building the app first.
#endif
