///
/// PurchaseIOS.swift
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
/// https://github.com/mrousavy/nitro
/// Copyright © Marc Rousavy @ Margelo
///

import NitroModules

/**
 * Represents an instance of `PurchaseIOS`, backed by a C++ struct.
 */
public typealias PurchaseIOS = margelo.nitro.iap.PurchaseIOS

public extension PurchaseIOS {
  private typealias bridge = margelo.nitro.iap.bridge.swift

  /**
   * Create a new instance of `PurchaseIOS`.
   */
  init(appAccountToken: Variant_NullType_String?, appBundleIdIOS: Variant_NullType_String?, countryCodeIOS: Variant_NullType_String?, currencyCodeIOS: Variant_NullType_String?, currencySymbolIOS: Variant_NullType_String?, currentPlanId: Variant_NullType_String?, environmentIOS: Variant_NullType_String?, expirationDateIOS: Variant_NullType_Double?, id: String, ids: Variant_NullType__String_?, isAutoRenewing: Bool, isUpgradedIOS: Variant_NullType_Bool?, offerIOS: Variant_NullType_PurchaseOfferIOS?, originalTransactionDateIOS: Variant_NullType_Double?, originalTransactionIdentifierIOS: Variant_NullType_String?, ownershipTypeIOS: Variant_NullType_String?, platform: IapPlatform, productId: String, purchaseState: PurchaseState, purchaseToken: Variant_NullType_String?, quantity: Double, quantityIOS: Variant_NullType_Double?, reasonIOS: Variant_NullType_String?, reasonStringRepresentationIOS: Variant_NullType_String?, renewalInfoIOS: Variant_NullType_RenewalInfoIOS?, revocationDateIOS: Variant_NullType_Double?, revocationReasonIOS: Variant_NullType_String?, store: IapStore, storefrontCountryCodeIOS: Variant_NullType_String?, subscriptionGroupIdIOS: Variant_NullType_String?, transactionDate: Double, transactionId: String, transactionReasonIOS: Variant_NullType_String?, webOrderLineItemIdIOS: Variant_NullType_String?) {
    self.init({ () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = appAccountToken {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = appBundleIdIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = countryCodeIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = currencyCodeIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = currencySymbolIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = currentPlanId {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = environmentIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__double__ in
      if let __unwrappedValue = expirationDateIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__double__({ () -> bridge.std__variant_nitro__NullType__double_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__double_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__double_(__value)
          }
        }().variant)
      } else {
        return .init()
      }
    }(), std.string(id), { () -> bridge.std__optional_std__variant_nitro__NullType__std__vector_std__string___ in
      if let __unwrappedValue = ids {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__vector_std__string___({ () -> bridge.std__variant_nitro__NullType__std__vector_std__string__ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__vector_std__string__(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__vector_std__string__({ () -> bridge.std__vector_std__string_ in
                var __vector = bridge.create_std__vector_std__string_(__value.count)
                for __item in __value {
                  __vector.push_back(std.string(__item))
                }
                return __vector
              }())
          }
        }().variant)
      } else {
        return .init()
      }
    }(), isAutoRenewing, { () -> bridge.std__optional_std__variant_nitro__NullType__bool__ in
      if let __unwrappedValue = isUpgradedIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__bool__({ () -> bridge.std__variant_nitro__NullType__bool_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__bool_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__bool_(__value)
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__PurchaseOfferIOS__ in
      if let __unwrappedValue = offerIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__PurchaseOfferIOS__({ () -> bridge.std__variant_nitro__NullType__PurchaseOfferIOS_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__PurchaseOfferIOS_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__PurchaseOfferIOS_(__value)
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__double__ in
      if let __unwrappedValue = originalTransactionDateIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__double__({ () -> bridge.std__variant_nitro__NullType__double_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__double_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__double_(__value)
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = originalTransactionIdentifierIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = ownershipTypeIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), platform, std.string(productId), purchaseState, { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = purchaseToken {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), quantity, { () -> bridge.std__optional_std__variant_nitro__NullType__double__ in
      if let __unwrappedValue = quantityIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__double__({ () -> bridge.std__variant_nitro__NullType__double_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__double_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__double_(__value)
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = reasonIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = reasonStringRepresentationIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__RenewalInfoIOS__ in
      if let __unwrappedValue = renewalInfoIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__RenewalInfoIOS__({ () -> bridge.std__variant_nitro__NullType__RenewalInfoIOS_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__RenewalInfoIOS_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__RenewalInfoIOS_(__value)
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__double__ in
      if let __unwrappedValue = revocationDateIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__double__({ () -> bridge.std__variant_nitro__NullType__double_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__double_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__double_(__value)
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = revocationReasonIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), store, { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = storefrontCountryCodeIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = subscriptionGroupIdIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), transactionDate, std.string(transactionId), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = transactionReasonIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }(), { () -> bridge.std__optional_std__variant_nitro__NullType__std__string__ in
      if let __unwrappedValue = webOrderLineItemIdIOS {
        return bridge.create_std__optional_std__variant_nitro__NullType__std__string__({ () -> bridge.std__variant_nitro__NullType__std__string_ in
          switch __unwrappedValue {
            case .first(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(margelo.nitro.NullType.null)
            case .second(let __value):
              return bridge.create_std__variant_nitro__NullType__std__string_(std.string(__value))
          }
        }().variant)
      } else {
        return .init()
      }
    }())
  }

  @inline(__always)
  var appAccountToken: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__appAccountToken) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__appAccountToken)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var appBundleIdIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__appBundleIdIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__appBundleIdIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var countryCodeIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__countryCodeIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__countryCodeIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var currencyCodeIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__currencyCodeIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__currencyCodeIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var currencySymbolIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__currencySymbolIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__currencySymbolIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var currentPlanId: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__currentPlanId) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__currentPlanId)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var environmentIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__environmentIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__environmentIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var expirationDateIOS: Variant_NullType_Double? {
    return { () -> Variant_NullType_Double? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__double__(self.__expirationDateIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__double__(self.__expirationDateIOS)
        return { () -> Variant_NullType_Double in
          let __variant = bridge.std__variant_nitro__NullType__double_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(__actual)
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var id: String {
    return String(self.__id)
  }
  
  @inline(__always)
  var ids: Variant_NullType__String_? {
    return { () -> Variant_NullType__String_? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__vector_std__string___(self.__ids) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__vector_std__string___(self.__ids)
        return { () -> Variant_NullType__String_ in
          let __variant = bridge.std__variant_nitro__NullType__std__vector_std__string__(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(__actual.map({ __item in String(__item) }))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var isAutoRenewing: Bool {
    return self.__isAutoRenewing
  }
  
  @inline(__always)
  var isUpgradedIOS: Variant_NullType_Bool? {
    return { () -> Variant_NullType_Bool? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__bool__(self.__isUpgradedIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__bool__(self.__isUpgradedIOS)
        return { () -> Variant_NullType_Bool in
          let __variant = bridge.std__variant_nitro__NullType__bool_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(__actual)
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var offerIOS: Variant_NullType_PurchaseOfferIOS? {
    return { () -> Variant_NullType_PurchaseOfferIOS? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__PurchaseOfferIOS__(self.__offerIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__PurchaseOfferIOS__(self.__offerIOS)
        return { () -> Variant_NullType_PurchaseOfferIOS in
          let __variant = bridge.std__variant_nitro__NullType__PurchaseOfferIOS_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(__actual)
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var originalTransactionDateIOS: Variant_NullType_Double? {
    return { () -> Variant_NullType_Double? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__double__(self.__originalTransactionDateIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__double__(self.__originalTransactionDateIOS)
        return { () -> Variant_NullType_Double in
          let __variant = bridge.std__variant_nitro__NullType__double_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(__actual)
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var originalTransactionIdentifierIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__originalTransactionIdentifierIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__originalTransactionIdentifierIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var ownershipTypeIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__ownershipTypeIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__ownershipTypeIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var platform: IapPlatform {
    return self.__platform
  }
  
  @inline(__always)
  var productId: String {
    return String(self.__productId)
  }
  
  @inline(__always)
  var purchaseState: PurchaseState {
    return self.__purchaseState
  }
  
  @inline(__always)
  var purchaseToken: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__purchaseToken) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__purchaseToken)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var quantity: Double {
    return self.__quantity
  }
  
  @inline(__always)
  var quantityIOS: Variant_NullType_Double? {
    return { () -> Variant_NullType_Double? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__double__(self.__quantityIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__double__(self.__quantityIOS)
        return { () -> Variant_NullType_Double in
          let __variant = bridge.std__variant_nitro__NullType__double_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(__actual)
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var reasonIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__reasonIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__reasonIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var reasonStringRepresentationIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__reasonStringRepresentationIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__reasonStringRepresentationIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var renewalInfoIOS: Variant_NullType_RenewalInfoIOS? {
    return { () -> Variant_NullType_RenewalInfoIOS? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__RenewalInfoIOS__(self.__renewalInfoIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__RenewalInfoIOS__(self.__renewalInfoIOS)
        return { () -> Variant_NullType_RenewalInfoIOS in
          let __variant = bridge.std__variant_nitro__NullType__RenewalInfoIOS_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(__actual)
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var revocationDateIOS: Variant_NullType_Double? {
    return { () -> Variant_NullType_Double? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__double__(self.__revocationDateIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__double__(self.__revocationDateIOS)
        return { () -> Variant_NullType_Double in
          let __variant = bridge.std__variant_nitro__NullType__double_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(__actual)
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var revocationReasonIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__revocationReasonIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__revocationReasonIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var store: IapStore {
    return self.__store
  }
  
  @inline(__always)
  var storefrontCountryCodeIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__storefrontCountryCodeIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__storefrontCountryCodeIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var subscriptionGroupIdIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__subscriptionGroupIdIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__subscriptionGroupIdIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var transactionDate: Double {
    return self.__transactionDate
  }
  
  @inline(__always)
  var transactionId: String {
    return String(self.__transactionId)
  }
  
  @inline(__always)
  var transactionReasonIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__transactionReasonIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__transactionReasonIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
  
  @inline(__always)
  var webOrderLineItemIdIOS: Variant_NullType_String? {
    return { () -> Variant_NullType_String? in
      if bridge.has_value_std__optional_std__variant_nitro__NullType__std__string__(self.__webOrderLineItemIdIOS) {
        let __unwrapped = bridge.get_std__optional_std__variant_nitro__NullType__std__string__(self.__webOrderLineItemIdIOS)
        return { () -> Variant_NullType_String in
          let __variant = bridge.std__variant_nitro__NullType__std__string_(__unwrapped)
          switch __variant.index() {
            case 0:
              let __actual = __variant.get_0()
              return .first(NullType.null)
            case 1:
              let __actual = __variant.get_1()
              return .second(String(__actual))
            default:
              fatalError("Variant can never have index \(__variant.index())!")
          }
        }()
      } else {
        return nil
      }
    }()
  }
}
