{
  "api": {
    "name": "PurchasesPlugin",
    "slug": "purchasesplugin",
    "docs": "",
    "tags": [],
    "methods": [
      {
        "name": "configure",
        "signature": "(configuration: PurchasesConfiguration) => Promise<void>",
        "parameters": [
          {
            "name": "configuration",
            "docs": "RevenueCat configuration object including the API key and other optional parameters. See {@link PurchasesConfiguration}",
            "type": "PurchasesConfiguration"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "configuration RevenueCat configuration object including the API key and other optional parameters. See {@link PurchasesConfiguration}"
          }
        ],
        "docs": "Sets up Purchases with your API key and an app user id.",
        "complexTypes": [
          "PurchasesConfiguration"
        ],
        "slug": "configure"
      },
      {
        "name": "getVirtualCurrencies",
        "signature": "() => Promise<{ virtualCurrencies: PurchasesVirtualCurrencies; }>",
        "parameters": [],
        "returns": "Promise<{ virtualCurrencies: PurchasesVirtualCurrencies; }>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise of a {@link PurchasesVirtualCurrencies} object.\nThe promise will be rejected if configure has not been called yet or if an error occurs while getting the virtual currencies."
          }
        ],
        "docs": "Fetches the virtual currencies for the current subscriber.",
        "complexTypes": [
          "PurchasesVirtualCurrencies"
        ],
        "slug": "getvirtualcurrencies"
      },
      {
        "name": "invalidateVirtualCurrenciesCache",
        "signature": "() => Promise<void>",
        "parameters": [],
        "returns": "Promise<void>",
        "tags": [],
        "docs": "Invalidates the cache for virtual currencies.\n\nThis is useful for cases where a virtual currency's balance might have been updated\noutside of the app, like if you decreased a user's balance from the user spending a virtual currency,\nor if you increased the balance from your backend using the server APIs.",
        "complexTypes": [],
        "slug": "invalidatevirtualcurrenciescache"
      },
      {
        "name": "getCachedVirtualCurrencies",
        "signature": "() => Promise<{ cachedVirtualCurrencies: PurchasesVirtualCurrencies | null; }>",
        "parameters": [],
        "returns": "Promise<{ cachedVirtualCurrencies: PurchasesVirtualCurrencies | null; }>",
        "tags": [
          {
            "name": "returns",
            "text": "The currently cached virtual currencies for the current subscriber.\nThe promise will be rejected if configure has not been called yet or there's an error."
          }
        ],
        "docs": "The currently cached {@link PurchasesVirtualCurrencies} if one is available.\nThis value will remain null until virtual currencies have been fetched at\nleast once with {@link getVirtualCurrencies} or an equivalent function.",
        "complexTypes": [
          "PurchasesVirtualCurrencies"
        ],
        "slug": "getcachedvirtualcurrencies"
      },
      {
        "name": "parseAsWebPurchaseRedemption",
        "signature": "(options: { urlString: string; }) => Promise<{ webPurchaseRedemption: WebPurchaseRedemption | null; }>",
        "parameters": [
          {
            "name": "options",
            "docs": "Set the urlString used to open the App.",
            "type": "{ urlString: string; }"
          }
        ],
        "returns": "Promise<{ webPurchaseRedemption: WebPurchaseRedemption | null; }>",
        "tags": [
          {
            "name": "param",
            "text": "options Set the urlString used to open the App."
          },
          {
            "name": "returns",
            "text": "A promise of a WebPurchaseRedemption\nobject that can be redeemed using {@link redeemWebPurchase} or null if the link is invalid."
          }
        ],
        "docs": "Parses the given URL string into a [WebPurchaseRedemption] object that can be used to redeem web purchases.",
        "complexTypes": [
          "WebPurchaseRedemption"
        ],
        "slug": "parseaswebpurchaseredemption"
      },
      {
        "name": "redeemWebPurchase",
        "signature": "(options: { webPurchaseRedemption: WebPurchaseRedemption; }) => Promise<WebPurchaseRedemptionResult>",
        "parameters": [
          {
            "name": "options",
            "docs": "The WebPurchaseRedemption object obtained from {@link parseAsWebPurchaseRedemption}.",
            "type": "{ webPurchaseRedemption: WebPurchaseRedemption; }"
          }
        ],
        "returns": "Promise<WebPurchaseRedemptionResult>",
        "tags": [
          {
            "name": "param",
            "text": "options The WebPurchaseRedemption object obtained from {@link parseAsWebPurchaseRedemption}."
          },
          {
            "name": "returns",
            "text": "The result of the redemption process.\nCan throw if an invalid WebPurchaseRedemption parameter is passed or Purchases is not configured."
          }
        ],
        "docs": "Redeems the web purchase associated with the Redemption Link obtained with [parseAsWebPurchaseRedemption].",
        "complexTypes": [
          "WebPurchaseRedemptionResult",
          "WebPurchaseRedemption"
        ],
        "slug": "redeemwebpurchase"
      },
      {
        "name": "setMockWebResults",
        "signature": "(options: { shouldMockWebResults: boolean; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Set shouldMockWebResults to true if you want the plugin methods to return mocked values",
            "type": "{ shouldMockWebResults: boolean; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Set shouldMockWebResults to true if you want the plugin methods to return mocked values"
          }
        ],
        "docs": "Sets whether the SDK should return mocked results in the web version.\nThis won't affect the iOS and Android versions of the implementation.\nDefault is false",
        "complexTypes": [],
        "slug": "setmockwebresults"
      },
      {
        "name": "setSimulatesAskToBuyInSandbox",
        "signature": "(options: { simulatesAskToBuyInSandbox: boolean; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Set this property to true *only* when testing the ask-to-buy / SCA\npurchases flow. More information: http://errors.rev.cat/ask-to-buy",
            "type": "{ simulatesAskToBuyInSandbox: boolean; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Set this property to true *only* when testing the ask-to-buy / SCA\npurchases flow. More information: http://errors.rev.cat/ask-to-buy"
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet."
          }
        ],
        "docs": "iOS only.",
        "complexTypes": [],
        "slug": "setsimulatesasktobuyinsandbox"
      },
      {
        "name": "addCustomerInfoUpdateListener",
        "signature": "(customerInfoUpdateListener: CustomerInfoUpdateListener) => Promise<PurchasesCallbackId>",
        "parameters": [
          {
            "name": "customerInfoUpdateListener",
            "docs": "CustomerInfo update listener",
            "type": "CustomerInfoUpdateListener"
          }
        ],
        "returns": "Promise<string>",
        "tags": [
          {
            "name": "param",
            "text": "customerInfoUpdateListener CustomerInfo update listener"
          }
        ],
        "docs": "Sets a function to be called on updated customer info",
        "complexTypes": [
          "CustomerInfoUpdateListener",
          "PurchasesCallbackId"
        ],
        "slug": "addcustomerinfoupdatelistener"
      },
      {
        "name": "removeCustomerInfoUpdateListener",
        "signature": "(options: { listenerToRemove: PurchasesCallbackId; }) => Promise<{ wasRemoved: boolean; }>",
        "parameters": [
          {
            "name": "options",
            "docs": "Include listenerToRemove, which is a CustomerInfoUpdateListener\nreference of the listener to remove",
            "type": "{ listenerToRemove: string; }"
          }
        ],
        "returns": "Promise<{ wasRemoved: boolean; }>",
        "tags": [
          {
            "name": "param",
            "text": "options Include listenerToRemove, which is a CustomerInfoUpdateListener\nreference of the listener to remove"
          },
          {
            "name": "returns",
            "text": "Promise with boolean. True if listener was removed, false otherwise"
          }
        ],
        "docs": "Removes a given CustomerInfoUpdateListener",
        "complexTypes": [
          "PurchasesCallbackId"
        ],
        "slug": "removecustomerinfoupdatelistener"
      },
      {
        "name": "getOfferings",
        "signature": "() => Promise<PurchasesOfferings>",
        "parameters": [],
        "returns": "Promise<PurchasesOfferings>",
        "tags": [
          {
            "name": "returns",
            "text": "Promise of entitlements structure. The promise will be rejected if configure\nhas not been called yet."
          }
        ],
        "docs": "Gets the map of entitlements -> offerings -> products",
        "complexTypes": [
          "PurchasesOfferings"
        ],
        "slug": "getofferings"
      },
      {
        "name": "getCurrentOfferingForPlacement",
        "signature": "(options: { placementIdentifier: string; }) => Promise<PurchasesOffering | null>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "{ placementIdentifier: string; }"
          }
        ],
        "returns": "Promise<PurchasesOffering | null>",
        "tags": [
          {
            "name": "returns",
            "text": "Promise of optional offering. The promise will be rejected if configure\nhas not been called yet."
          }
        ],
        "docs": "Retrieves a current offering for a placement identifier, use this to access offerings defined by targeting\nplacements configured in the RevenueCat dashboard.",
        "complexTypes": [
          "PurchasesOffering"
        ],
        "slug": "getcurrentofferingforplacement"
      },
      {
        "name": "syncAttributesAndOfferingsIfNeeded",
        "signature": "() => Promise<PurchasesOfferings>",
        "parameters": [],
        "returns": "Promise<PurchasesOfferings>",
        "tags": [
          {
            "name": "returns",
            "text": "Promise of entitlements structure. The promise will be rejected if configure\nhas not been called yet."
          }
        ],
        "docs": "Syncs subscriber attributes and then fetches the configured offerings for this user. This method is intended to\nbe called when using Targeting Rules with Custom Attributes. Any subscriber attributes should be set before\ncalling this method to ensure the returned offerings are applied with the latest subscriber attributes.",
        "complexTypes": [
          "PurchasesOfferings"
        ],
        "slug": "syncattributesandofferingsifneeded"
      },
      {
        "name": "getProducts",
        "signature": "(options: GetProductOptions) => Promise<{ products: PurchasesStoreProduct[]; }>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "GetProductOptions"
          }
        ],
        "returns": "Promise<{ products: PurchasesStoreProduct[]; }>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise containing an array of products. The promise will be rejected\nif the products are not properly configured in RevenueCat or if there is another error retrieving them.\nRejections return an error code, and a userInfo object with more information. The promise will also be rejected\nif configure has not been called yet."
          }
        ],
        "docs": "Fetch the product info",
        "complexTypes": [
          "PurchasesStoreProduct",
          "GetProductOptions"
        ],
        "slug": "getproducts"
      },
      {
        "name": "purchaseStoreProduct",
        "signature": "(options: PurchaseStoreProductOptions) => Promise<MakePurchaseResult>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "PurchaseStoreProductOptions"
          }
        ],
        "returns": "Promise<MakePurchaseResult>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise of an object containing\na customer info object and a product identifier. Rejections return an error code,\na boolean indicating if the user cancelled the purchase, and an object with more information. The promise will\nalso be rejected if configure has not been called yet."
          }
        ],
        "docs": "Make a purchase",
        "complexTypes": [
          "MakePurchaseResult",
          "PurchaseStoreProductOptions"
        ],
        "slug": "purchasestoreproduct"
      },
      {
        "name": "purchaseDiscountedProduct",
        "signature": "(options: PurchaseDiscountedProductOptions) => Promise<MakePurchaseResult>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "PurchaseDiscountedProductOptions"
          }
        ],
        "returns": "Promise<MakePurchaseResult>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise of an object containing\na customer info object and a product identifier. Rejections return an error code,\na boolean indicating if the user cancelled the purchase, and an object with more information. The promise will be\nrejected if configure has not been called yet."
          }
        ],
        "docs": "iOS only. Purchase a product applying a given discount.",
        "complexTypes": [
          "MakePurchaseResult",
          "PurchaseDiscountedProductOptions"
        ],
        "slug": "purchasediscountedproduct"
      },
      {
        "name": "purchasePackage",
        "signature": "(options: PurchasePackageOptions) => Promise<MakePurchaseResult>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "PurchasePackageOptions"
          }
        ],
        "returns": "Promise<MakePurchaseResult>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise of an object containing\na customer info object and a product identifier. Rejections return an error code, a boolean indicating if the\nuser cancelled the purchase, and an object with more information. The promise will be also be rejected if configure\nhas not been called yet."
          }
        ],
        "docs": "Make a purchase",
        "complexTypes": [
          "MakePurchaseResult",
          "PurchasePackageOptions"
        ],
        "slug": "purchasepackage"
      },
      {
        "name": "purchaseSubscriptionOption",
        "signature": "(options: PurchaseSubscriptionOptionOptions) => Promise<MakePurchaseResult>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "PurchaseSubscriptionOptionOptions"
          }
        ],
        "returns": "Promise<MakePurchaseResult>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise of an object containing\na customer info object and a product identifier. Rejections return an error code, a boolean indicating if the\nuser cancelled the purchase, and an object with more information. The promise will be also be rejected if configure\nhas not been called yet."
          }
        ],
        "docs": "Google only. Make a purchase of a subscriptionOption",
        "complexTypes": [
          "MakePurchaseResult",
          "PurchaseSubscriptionOptionOptions"
        ],
        "slug": "purchasesubscriptionoption"
      },
      {
        "name": "purchaseDiscountedPackage",
        "signature": "(options: PurchaseDiscountedPackageOptions) => Promise<MakePurchaseResult>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "PurchaseDiscountedPackageOptions"
          }
        ],
        "returns": "Promise<MakePurchaseResult>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise of an object containing\na customer info object and a product identifier. Rejections return an error code, a boolean indicating if the\nuser cancelled the purchase, and an object with more information. The promise will be also be rejected if configure\nhas not been called yet."
          }
        ],
        "docs": "iOS only. Purchase a package applying a given discount.",
        "complexTypes": [
          "MakePurchaseResult",
          "PurchaseDiscountedPackageOptions"
        ],
        "slug": "purchasediscountedpackage"
      },
      {
        "name": "restorePurchases",
        "signature": "() => Promise<{ customerInfo: CustomerInfo; }>",
        "parameters": [],
        "returns": "Promise<{ customerInfo: CustomerInfo; }>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise of a customer info object. Rejections return an error code, and an\nuserInfo object with more information. The promise will be also be rejected if configure has not been called yet."
          }
        ],
        "docs": "Restores a user's previous purchases and links their appUserIDs to any user's also using those purchases.",
        "complexTypes": [
          "CustomerInfo"
        ],
        "slug": "restorepurchases"
      },
      {
        "name": "recordPurchase",
        "signature": "(options: { productID: string; }) => Promise<{ transaction: PurchasesStoreTransaction; }>",
        "parameters": [
          {
            "name": "options",
            "docs": "The productID that was purchased that needs to be synced with RevenueCat's backend.",
            "type": "{ productID: string; }"
          }
        ],
        "returns": "Promise<{ transaction: PurchasesStoreTransaction; }>",
        "tags": [
          {
            "name": "param",
            "text": "options The productID that was purchased that needs to be synced with RevenueCat's backend."
          }
        ],
        "docs": "Use this method only if you already have your own IAP implementation using StoreKit 2 and want to use\nRevenueCat's backend. If you are using StoreKit 1 for your implementation, you do not need this method.\n\nYou only need to use this method with *new* purchases. Subscription updates are observed automatically.",
        "complexTypes": [
          "PurchasesStoreTransaction"
        ],
        "slug": "recordpurchase"
      },
      {
        "name": "getAppUserID",
        "signature": "() => Promise<{ appUserID: string; }>",
        "parameters": [],
        "returns": "Promise<{ appUserID: string; }>",
        "tags": [
          {
            "name": "returns",
            "text": "The app user id in a promise"
          }
        ],
        "docs": "Get the appUserID",
        "complexTypes": [],
        "slug": "getappuserid"
      },
      {
        "name": "getStorefront",
        "signature": "() => Promise<Storefront>",
        "parameters": [],
        "returns": "Promise<Storefront>",
        "tags": [
          {
            "name": "return",
            "text": "A promise of a Storefront object.\nThe promise will be rejected if configure has not been called yet or if storefront could\nnot be obtained for account."
          }
        ],
        "docs": "Gets the storefront for the current store account.",
        "complexTypes": [
          "Storefront"
        ],
        "slug": "getstorefront"
      },
      {
        "name": "logIn",
        "signature": "(options: { appUserID: string; }) => Promise<LogInResult>",
        "parameters": [
          {
            "name": "options",
            "docs": "The appUserID that should be linked to the current user",
            "type": "{ appUserID: string; }"
          }
        ],
        "returns": "Promise<LogInResult>",
        "tags": [
          {
            "name": "param",
            "text": "options The appUserID that should be linked to the current user"
          },
          {
            "name": "returns",
            "text": "A promise of an object that contains the customerInfo after logging in, as well\nas a boolean indicating whether the user has just been created for the first time in the RevenueCat backend. The\npromise will be rejected if configure has not been called yet or if there's an issue logging in."
          }
        ],
        "docs": "This function will log in the current user with an appUserID. Typically, this would be used after a log in\nto identify a user without calling configure.",
        "complexTypes": [
          "LogInResult"
        ],
        "slug": "login"
      },
      {
        "name": "logOut",
        "signature": "() => Promise<{ customerInfo: CustomerInfo; }>",
        "parameters": [],
        "returns": "Promise<{ customerInfo: CustomerInfo; }>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise of a customer info object. Rejections return an error code,\nand a userInfo object with more information. The promise will be rejected if configure has not been called yet or if\nthere's an issue logging out."
          }
        ],
        "docs": "Logs out the Purchases client clearing the saved appUserID. This will generate a random user id and save it in the cache.",
        "complexTypes": [
          "CustomerInfo"
        ],
        "slug": "logout"
      },
      {
        "name": "setLogLevel",
        "signature": "(options: { level: LOG_LEVEL; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Log level to use to display logs.",
            "type": "{ level: LOG_LEVEL; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Log level to use to display logs."
          }
        ],
        "docs": "Used to set the log level. Useful for debugging issues with the lovely team @RevenueCat.\nThe default is {LOG_LEVEL.INFO} in release builds and {LOG_LEVEL.DEBUG} in debug builds.",
        "complexTypes": [
          "LOG_LEVEL"
        ],
        "slug": "setloglevel"
      },
      {
        "name": "setLogHandler",
        "signature": "(logHandler: LogHandler) => Promise<void>",
        "parameters": [
          {
            "name": "logHandler",
            "docs": "It will get called for each log event.\nUse this function to redirect the log to your own logging system",
            "type": "LogHandler"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "logHandler It will get called for each log event.\nUse this function to redirect the log to your own logging system"
          }
        ],
        "docs": "Set a custom log handler for redirecting logs to your own logging system.\nBy default, this sends info, warning, and error messages.\nIf you wish to receive Debug level messages, see [setLogLevel].",
        "complexTypes": [
          "LogHandler"
        ],
        "slug": "setloghandler"
      },
      {
        "name": "getCustomerInfo",
        "signature": "() => Promise<{ customerInfo: CustomerInfo; }>",
        "parameters": [],
        "returns": "Promise<{ customerInfo: CustomerInfo; }>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise of a customer info object. Rejections return an error code, and an\nuserInfo object with more information. The promise will be rejected if configure has not been called yet or if\nthere's an issue getting the customer information."
          }
        ],
        "docs": "Gets current customer info",
        "complexTypes": [
          "CustomerInfo"
        ],
        "slug": "getcustomerinfo"
      },
      {
        "name": "syncPurchases",
        "signature": "() => Promise<void>",
        "parameters": [],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "warning",
            "text": "This function should only be called if you're not calling purchaseProduct/purchaseStoreProduct/purchasePackage/purchaseSubscriptionOption."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsyncing purchases."
          }
        ],
        "docs": "This method will send all the purchases to the RevenueCat backend. Call this when using your own implementation\nfor subscriptions anytime a sync is needed, like after a successful purchase.",
        "complexTypes": [],
        "slug": "syncpurchases"
      },
      {
        "name": "syncObserverModeAmazonPurchase",
        "signature": "(options: SyncObserverModeAmazonPurchaseOptions) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "SyncObserverModeAmazonPurchaseOptions"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "deprecated",
            "text": "- Use syncAmazonPurchase instead\nThis method will send a purchase to the RevenueCat backend. This function should only be called if you are\nin Amazon observer mode or performing a client side migration of your current users to RevenueCat.\n\nThe receipt IDs are cached if successfully posted, so they are not posted more than once."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsyncing purchases."
          }
        ],
        "docs": "",
        "complexTypes": [
          "SyncObserverModeAmazonPurchaseOptions"
        ],
        "slug": "syncobservermodeamazonpurchase"
      },
      {
        "name": "syncAmazonPurchase",
        "signature": "(options: SyncAmazonPurchaseOptions) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "SyncAmazonPurchaseOptions"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsyncing purchases."
          }
        ],
        "docs": "This method will send a purchase to the RevenueCat backend. This function should only be called if you are\nin Amazon observer mode or performing a client side migration of your current users to RevenueCat.\n\nThe receipt IDs are cached if successfully posted, so they are not posted more than once.\n\n`purchaseTime` is required and can be obtained from Amazon's PurchaseResponse > Receipt > purchaseTime.",
        "complexTypes": [
          "SyncAmazonPurchaseOptions"
        ],
        "slug": "syncamazonpurchase"
      },
      {
        "name": "enableAdServicesAttributionTokenCollection",
        "signature": "() => Promise<void>",
        "parameters": [],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet."
          }
        ],
        "docs": "Enable automatic collection of Apple Search Ad attribution on iOS. Disabled by default. Supported in iOS 14.3+ only",
        "complexTypes": [],
        "slug": "enableadservicesattributiontokencollection"
      },
      {
        "name": "isAnonymous",
        "signature": "() => Promise<{ isAnonymous: boolean; }>",
        "parameters": [],
        "returns": "Promise<{ isAnonymous: boolean; }>",
        "tags": [
          {
            "name": "returns",
            "text": "If the `appUserID` has been generated by RevenueCat or not.\nThe promise will be rejected if configure has not been called yet."
          }
        ],
        "docs": "",
        "complexTypes": [],
        "slug": "isanonymous"
      },
      {
        "name": "checkTrialOrIntroductoryPriceEligibility",
        "signature": "(options: { productIdentifiers: string[]; }) => Promise<{ [productId: string]: IntroEligibility; }>",
        "parameters": [
          {
            "name": "options",
            "docs": "Array of product identifiers for which you want to compute eligibility",
            "type": "{ productIdentifiers: string[]; }"
          }
        ],
        "returns": "Promise<{ [productId: string]: IntroEligibility; }>",
        "tags": [
          {
            "name": "note",
            "text": "Subscription groups are automatically collected for determining eligibility. If RevenueCat can't\ndefinitively compute the eligibility, most likely because of missing group information, it will return\n`INTRO_ELIGIBILITY_STATUS_UNKNOWN`. The best course of action on unknown status is to display the non-intro\npricing, to not create a misleading situation. To avoid this, make sure you are testing with the latest version of\niOS so that the subscription group can be collected by the SDK. Android always returns INTRO_ELIGIBILITY_STATUS_UNKNOWN."
          },
          {
            "name": "param",
            "text": "options Array of product identifiers for which you want to compute eligibility"
          },
          {
            "name": "returns",
            "text": ": IntroEligibility> } A map of IntroEligility per productId. The promise\nwill be rejected if configure has not been called yet or if there's in an error checking eligibility."
          }
        ],
        "docs": "iOS only. Computes whether a user is eligible for the introductory pricing period of a given product.\nYou should use this method to determine whether you show the user the normal product price or the\nintroductory price. This also applies to trials (trials are considered a type of introductory pricing).",
        "complexTypes": [
          "IntroEligibility"
        ],
        "slug": "checktrialorintroductorypriceeligibility"
      },
      {
        "name": "getPromotionalOffer",
        "signature": "(options: GetPromotionalOfferOptions) => Promise<PurchasesPromotionalOffer | undefined>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "GetPromotionalOfferOptions"
          }
        ],
        "returns": "Promise<PurchasesPromotionalOffer | undefined>",
        "tags": [
          {
            "name": "returns",
            "text": "Returns when the `PurchasesPaymentDiscount` is returned.\nNull is returned for Android and incompatible iOS versions. The promise will be rejected if configure has not been\ncalled yet or if there's an error getting the payment discount."
          }
        ],
        "docs": "iOS only. Use this function to retrieve the `PurchasesPromotionalOffer` for a given `PurchasesPackage`.",
        "complexTypes": [
          "PurchasesPromotionalOffer",
          "GetPromotionalOfferOptions"
        ],
        "slug": "getpromotionaloffer"
      },
      {
        "name": "getEligibleWinBackOffersForProduct",
        "signature": "(options: GetEligibleWinBackOffersForProductOptions) => Promise<{ eligibleWinBackOffers: PurchasesWinBackOffer[]; }>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "GetEligibleWinBackOffersForProductOptions"
          }
        ],
        "returns": "Promise<{ eligibleWinBackOffers: PurchasesWinBackOffer[]; }>",
        "tags": [
          {
            "name": "returns",
            "text": "A dictionary containing an array of `PurchasesWinBackOffer`s that\nthe subscriber is eligible for for the given `PurchasesStoreProduct`.\nThe promise will be rejected if called on an unsupported platform (Android or iOS < 18), or if called on iOS 18+ with StoreKit 1.\nThe promise will also be rejected if configure has not been called yet."
          }
        ],
        "docs": "iOS only, requires iOS 18.0 or greater with StoreKit 2. Use this function to retrieve\nthe eligible `PurchasesWinBackOffer`s that a subscriber is eligible for for a\ngiven `PurchasesStoreProduct`.",
        "complexTypes": [
          "PurchasesWinBackOffer",
          "GetEligibleWinBackOffersForProductOptions"
        ],
        "slug": "geteligiblewinbackoffersforproduct"
      },
      {
        "name": "getEligibleWinBackOffersForPackage",
        "signature": "(options: GetEligibleWinBackOffersForPackageOptions) => Promise<{ eligibleWinBackOffers: PurchasesWinBackOffer[]; }>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "GetEligibleWinBackOffersForPackageOptions"
          }
        ],
        "returns": "Promise<{ eligibleWinBackOffers: PurchasesWinBackOffer[]; }>",
        "tags": [
          {
            "name": "returns",
            "text": "An array of `PurchasesWinBackOffer`s that\nthe subscriber is eligible for for the given `PurchasesStorePackage`.\nThe promise will be rejected if called on an unsupported platform (Android or iOS < 18), or if called on iOS 18+ with StoreKit 1.\nThe promise will also be rejected if configure has not been called yet."
          }
        ],
        "docs": "iOS only, requires iOS 18.0 or greater with StoreKit 2. Use this function to retrieve\nthe eligible `PurchasesWinBackOffer`s that a subscriber is eligible for for a\ngiven `PurchasesStorePackage`.",
        "complexTypes": [
          "PurchasesWinBackOffer",
          "GetEligibleWinBackOffersForPackageOptions"
        ],
        "slug": "geteligiblewinbackoffersforpackage"
      },
      {
        "name": "purchaseProductWithWinBackOffer",
        "signature": "(options: PurchaseProductWithWinBackOfferOptions) => Promise<MakePurchaseResult | undefined>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "PurchaseProductWithWinBackOfferOptions"
          }
        ],
        "returns": "Promise<MakePurchaseResult | undefined>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise of an object containing\na customer info object, a transaction, and a product identifier. Rejections return an error code, a boolean indicating if the\nuser cancelled the purchase, and an object with more information. The promise will be also be rejected if configure\nhas not been called yet or if called in an unsupported platform (Android or iOS < 18), or if called on iOS 18+ with StoreKit 1."
          }
        ],
        "docs": "iOS only, requires iOS 18.0 or greater with StoreKit 2. Purchase a product applying a given win-back offer.",
        "complexTypes": [
          "MakePurchaseResult",
          "PurchaseProductWithWinBackOfferOptions"
        ],
        "slug": "purchaseproductwithwinbackoffer"
      },
      {
        "name": "purchasePackageWithWinBackOffer",
        "signature": "(options: PurchasePackageWithWinBackOfferOptions) => Promise<MakePurchaseResult | undefined>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "PurchasePackageWithWinBackOfferOptions"
          }
        ],
        "returns": "Promise<MakePurchaseResult | undefined>",
        "tags": [
          {
            "name": "returns",
            "text": "A promise of an object containing\na customer info object, a transaction, and a product identifier. Rejections return an error code, a boolean indicating if the\nuser cancelled the purchase, and an object with more information. The promise will be also be rejected if configure\nhas not been called yet or if called in an unsupported platform (Android or iOS < 18), or if called on iOS 18+ with StoreKit 1."
          }
        ],
        "docs": "iOS only, requires iOS 18.0 or greater with StoreKit 2. Purchase a package applying a given win-back offer.",
        "complexTypes": [
          "MakePurchaseResult",
          "PurchasePackageWithWinBackOfferOptions"
        ],
        "slug": "purchasepackagewithwinbackoffer"
      },
      {
        "name": "invalidateCustomerInfoCache",
        "signature": "() => Promise<void>",
        "parameters": [],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or there's an error\ninvalidating the customer info cache."
          }
        ],
        "docs": "Invalidates the cache for customer information.\n\nMost apps will not need to use this method; invalidating the cache can leave your app in an invalid state.\nRefer to https://docs.revenuecat.com/docs/customer-info#section-get-user-information for more information on\nusing the cache properly.\n\nThis is useful for cases where customer information might have been updated outside the app, like if a\npromotional subscription is granted through the RevenueCat dashboard.",
        "complexTypes": [],
        "slug": "invalidatecustomerinfocache"
      },
      {
        "name": "presentCodeRedemptionSheet",
        "signature": "() => Promise<void>",
        "parameters": [],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or there's an error\npresenting the code redemption sheet."
          }
        ],
        "docs": "iOS 14.0+ only. Presents a code redemption sheet, useful for redeeming offer codes\nRefer to https://docs.revenuecat.com/docs/ios-subscription-offers#offer-codes for more information on how\nto configure and use offer codes",
        "complexTypes": [],
        "slug": "presentcoderedemptionsheet"
      },
      {
        "name": "setAttributes",
        "signature": "(attributes: { [key: string]: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "attributes",
            "docs": "Map of attributes by key. Set the value as an empty string to delete an attribute.",
            "type": "{ [key: string]: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "attributes Map of attributes by key. Set the value as an empty string to delete an attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or there's an error\nsetting the subscriber attributes."
          }
        ],
        "docs": "Subscriber attributes are useful for storing additional, structured information on a user.\nSince attributes are writable using a public key they should not be used for\nmanaging secure or sensitive information such as subscription status, coins, etc.\n\nKey names starting with \"$\" are reserved names used by RevenueCat. For a full list of key\nrestrictions refer to our guide: https://docs.revenuecat.com/docs/subscriber-attributes",
        "complexTypes": [],
        "slug": "setattributes"
      },
      {
        "name": "setEmail",
        "signature": "(options: { email: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Empty String or null will delete the subscriber attribute.",
            "type": "{ email: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the email."
          }
        ],
        "docs": "Subscriber attribute associated with the email address for the user",
        "complexTypes": [],
        "slug": "setemail"
      },
      {
        "name": "setPhoneNumber",
        "signature": "(options: { phoneNumber: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Empty String or null will delete the subscriber attribute.",
            "type": "{ phoneNumber: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the phone number."
          }
        ],
        "docs": "Subscriber attribute associated with the phone number for the user",
        "complexTypes": [],
        "slug": "setphonenumber"
      },
      {
        "name": "setDisplayName",
        "signature": "(options: { displayName: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Empty String or null will delete the subscriber attribute.",
            "type": "{ displayName: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the display name."
          }
        ],
        "docs": "Subscriber attribute associated with the display name for the user",
        "complexTypes": [],
        "slug": "setdisplayname"
      },
      {
        "name": "setPushToken",
        "signature": "(options: { pushToken: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "null will delete the subscriber attribute.",
            "type": "{ pushToken: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the push token."
          }
        ],
        "docs": "Subscriber attribute associated with the push token for the user",
        "complexTypes": [],
        "slug": "setpushtoken"
      },
      {
        "name": "setProxyURL",
        "signature": "(options: { url: string; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "",
            "type": "{ url: string; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the proxy url."
          }
        ],
        "docs": "Set this property to your proxy URL before configuring Purchases *only* if you've received a proxy key value\nfrom your RevenueCat contact.",
        "complexTypes": [],
        "slug": "setproxyurl"
      },
      {
        "name": "collectDeviceIdentifiers",
        "signature": "() => Promise<void>",
        "parameters": [],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting collecting the device identifiers."
          }
        ],
        "docs": "Automatically collect subscriber attributes associated with the device identifiers.\n$idfa, $idfv, $ip on iOS\n$gpsAdId, $androidId, $ip on Android",
        "complexTypes": [],
        "slug": "collectdeviceidentifiers"
      },
      {
        "name": "setAdjustID",
        "signature": "(options: { adjustID: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Adjust ID to use in Adjust integration. Empty String or null will delete the subscriber attribute.",
            "type": "{ adjustID: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Adjust ID to use in Adjust integration. Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting Adjust ID."
          }
        ],
        "docs": "Subscriber attribute associated with the Adjust ID for the user\nRequired for the RevenueCat Adjust integration",
        "complexTypes": [],
        "slug": "setadjustid"
      },
      {
        "name": "setAppsflyerID",
        "signature": "(options: { appsflyerID: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Appsflyer ID to use in Appsflyer integration. Empty String or null will delete the subscriber attribute.",
            "type": "{ appsflyerID: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Appsflyer ID to use in Appsflyer integration. Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the Appsflyer ID."
          }
        ],
        "docs": "Subscriber attribute associated with the AppsFlyer ID for the user\nRequired for the RevenueCat AppsFlyer integration",
        "complexTypes": [],
        "slug": "setappsflyerid"
      },
      {
        "name": "setFBAnonymousID",
        "signature": "(options: { fbAnonymousID: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Facebook Anonymous ID to use in Mparticle integration. Empty String or null will delete the subscriber attribute.",
            "type": "{ fbAnonymousID: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Facebook Anonymous ID to use in Mparticle integration. Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the Facebook Anonymous ID."
          }
        ],
        "docs": "Subscriber attribute associated with the Facebook SDK Anonymous ID for the user\nRecommended for the RevenueCat Facebook integration",
        "complexTypes": [],
        "slug": "setfbanonymousid"
      },
      {
        "name": "setMparticleID",
        "signature": "(options: { mparticleID: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Mparticle ID to use in Mparticle integration. Empty String or null will delete the subscriber attribute.",
            "type": "{ mparticleID: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Mparticle ID to use in Mparticle integration. Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the Mparticle ID."
          }
        ],
        "docs": "Subscriber attribute associated with the mParticle ID for the user\nRecommended for the RevenueCat mParticle integration",
        "complexTypes": [],
        "slug": "setmparticleid"
      },
      {
        "name": "setCleverTapID",
        "signature": "(options: { cleverTapID: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "CleverTap user ID to use in CleverTap integration. Empty String or null will delete the subscriber attribute.",
            "type": "{ cleverTapID: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options CleverTap user ID to use in CleverTap integration. Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the CleverTap ID."
          }
        ],
        "docs": "Subscriber attribute associated with the CleverTap ID for the user\nRequired for the RevenueCat CleverTap integration",
        "complexTypes": [],
        "slug": "setclevertapid"
      },
      {
        "name": "setMixpanelDistinctID",
        "signature": "(options: { mixpanelDistinctID: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Mixpanel Distinct ID to use in Mixpanel integration. Empty String or null will delete the subscriber attribute.",
            "type": "{ mixpanelDistinctID: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Mixpanel Distinct ID to use in Mixpanel integration. Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the Mixpanel Distinct ID."
          }
        ],
        "docs": "Subscriber attribute associated with the Mixpanel Distinct ID for the user\nRequired for the RevenueCat Mixpanel integration",
        "complexTypes": [],
        "slug": "setmixpaneldistinctid"
      },
      {
        "name": "setFirebaseAppInstanceID",
        "signature": "(options: { firebaseAppInstanceID: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Firebase App Instance ID to use in Firebase integration. Empty String or null will delete the subscriber attribute.",
            "type": "{ firebaseAppInstanceID: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Firebase App Instance ID to use in Firebase integration. Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the Firebase App Instance ID."
          }
        ],
        "docs": "Subscriber attribute associated with the Firebase App Instance ID for the user\nRequired for the RevenueCat Firebase integration",
        "complexTypes": [],
        "slug": "setfirebaseappinstanceid"
      },
      {
        "name": "setOnesignalID",
        "signature": "(options: { onesignalID: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "OneSignal Player ID to use in OneSignal integration. Empty String or null will delete the subscriber attribute.",
            "type": "{ onesignalID: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options OneSignal Player ID to use in OneSignal integration. Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the OneSignal ID."
          }
        ],
        "docs": "Subscriber attribute associated with the OneSignal Player ID for the user\nRequired for the RevenueCat OneSignal integration. Deprecated for OneSignal versions above v9.0.",
        "complexTypes": [],
        "slug": "setonesignalid"
      },
      {
        "name": "setOnesignalUserID",
        "signature": "(options: { onesignalUserID: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "OneSignal UserId to use in OneSignal integration. Empty String or null will delete the subscriber attribute.",
            "type": "{ onesignalUserID: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options OneSignal UserId to use in OneSignal integration. Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the OneSignal user ID."
          }
        ],
        "docs": "Subscriber attribute associated with the OneSignal User ID for the user\nRequired for the RevenueCat OneSignal integration with versions v11.0 and above.",
        "complexTypes": [],
        "slug": "setonesignaluserid"
      },
      {
        "name": "setSingularDeviceID",
        "signature": "(options: { singularDeviceID: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Singular device ID to use in the Singular integration. Empty String or null will delete the subscriber attribute.",
            "type": "{ singularDeviceID: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Singular device ID to use in the Singular integration. Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the Singular device ID."
          }
        ],
        "docs": "Subscriber attribute associated with the Singular Device ID (SDID) for the user\nRequired for the RevenueCat Singular integration when using Singular's Event\nEndpoint V2. The SDID is generated by the Singular SDK and cannot be collected by\ncollectDeviceIdentifiers, so it has to be forwarded by the app.",
        "complexTypes": [],
        "slug": "setsingulardeviceid"
      },
      {
        "name": "setAirshipChannelID",
        "signature": "(options: { airshipChannelID: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Airship Channel ID to use in Airship integration. Empty String or null will delete the subscriber attribute.",
            "type": "{ airshipChannelID: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Airship Channel ID to use in Airship integration. Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the Airship Channel ID."
          }
        ],
        "docs": "Subscriber attribute associated with the Airship Channel ID for the user\nRequired for the RevenueCat Airship integration",
        "complexTypes": [],
        "slug": "setairshipchannelid"
      },
      {
        "name": "setMediaSource",
        "signature": "(options: { mediaSource: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Empty String or null will delete the subscriber attribute.",
            "type": "{ mediaSource: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the media source."
          }
        ],
        "docs": "Subscriber attribute associated with the install media source for the user",
        "complexTypes": [],
        "slug": "setmediasource"
      },
      {
        "name": "setCampaign",
        "signature": "(options: { campaign: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Empty String or null will delete the subscriber attribute.",
            "type": "{ campaign: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the campaign."
          }
        ],
        "docs": "Subscriber attribute associated with the install campaign for the user",
        "complexTypes": [],
        "slug": "setcampaign"
      },
      {
        "name": "setAdGroup",
        "signature": "(options: { adGroup: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Empty String or null will delete the subscriber attribute.",
            "type": "{ adGroup: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting ad group."
          }
        ],
        "docs": "Subscriber attribute associated with the install ad group for the user",
        "complexTypes": [],
        "slug": "setadgroup"
      },
      {
        "name": "setAd",
        "signature": "(options: { ad: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Empty String or null will delete the subscriber attribute.",
            "type": "{ ad: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the ad subscriber attribute."
          }
        ],
        "docs": "Subscriber attribute associated with the install ad for the user",
        "complexTypes": [],
        "slug": "setad"
      },
      {
        "name": "setKeyword",
        "signature": "(options: { keyword: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Empty String or null will delete the subscriber attribute.",
            "type": "{ keyword: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the keyword."
          }
        ],
        "docs": "Subscriber attribute associated with the install keyword for the user",
        "complexTypes": [],
        "slug": "setkeyword"
      },
      {
        "name": "setCreative",
        "signature": "(options: { creative: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Empty String or null will delete the subscriber attribute.",
            "type": "{ creative: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Empty String or null will delete the subscriber attribute."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet or if there's an error\nsetting the creative subscriber attribute."
          }
        ],
        "docs": "Subscriber attribute associated with the install ad creative for the user",
        "complexTypes": [],
        "slug": "setcreative"
      },
      {
        "name": "canMakePayments",
        "signature": "(options?: { features?: BILLING_FEATURE[] | undefined; } | undefined) => Promise<{ canMakePayments: boolean; }>",
        "parameters": [
          {
            "name": "options",
            "docs": "An array of feature types to check for support. Feature types must be one of\n[BILLING_FEATURE]. By default, is an empty list and no specific feature support will be checked.",
            "type": "{ features?: BILLING_FEATURE[] | undefined; } | undefined"
          }
        ],
        "returns": "Promise<{ canMakePayments: boolean; }>",
        "tags": [
          {
            "name": "param",
            "text": "options An array of feature types to check for support. Feature types must be one of\n[BILLING_FEATURE]. By default, is an empty list and no specific feature support will be checked."
          },
          {
            "name": "returns",
            "text": "promise with boolean response. True if billing is supported, false otherwise."
          }
        ],
        "docs": "Check if billing is supported for the current user (meaning IN-APP purchases are supported)\nand optionally, whether a list of specified feature types are supported.\n\nNote: Billing features are only relevant to Google Play Android users.\nFor other stores and platforms, billing features won't be checked.",
        "complexTypes": [
          "BILLING_FEATURE"
        ],
        "slug": "canmakepayments"
      },
      {
        "name": "beginRefundRequestForActiveEntitlement",
        "signature": "() => Promise<{ refundRequestStatus: REFUND_REQUEST_STATUS; }>",
        "parameters": [],
        "returns": "Promise<{ refundRequestStatus: REFUND_REQUEST_STATUS; }>",
        "tags": [
          {
            "name": "returns",
            "text": "Returns refundRequestStatus: The status of the\nrefund request. Keep in mind the status could be REFUND_REQUEST_STATUS.USER_CANCELLED"
          }
        ],
        "docs": "iOS 15+ only. Presents a refund request sheet in the current window scene for\nthe latest transaction associated with the active entitlement.\n\nIf the request was unsuccessful, no active entitlements could be found for\nthe user, or multiple active entitlements were found for the user,\nthe promise will return an error.\nIf called in an unsupported platform (Android or iOS < 15), an `UnsupportedPlatformException` will be thrown.\n\nImportant: This method should only be used if your user can only have a single active entitlement at a given time.\nIf a user could have more than one entitlement at a time, use `beginRefundRequestForEntitlement` instead.",
        "complexTypes": [
          "REFUND_REQUEST_STATUS"
        ],
        "slug": "beginrefundrequestforactiveentitlement"
      },
      {
        "name": "beginRefundRequestForEntitlement",
        "signature": "(options: { entitlementInfo: PurchasesEntitlementInfo; }) => Promise<{ refundRequestStatus: REFUND_REQUEST_STATUS; }>",
        "parameters": [
          {
            "name": "options",
            "docs": "The entitlement to begin a refund request for.",
            "type": "{ entitlementInfo: PurchasesEntitlementInfo; }"
          }
        ],
        "returns": "Promise<{ refundRequestStatus: REFUND_REQUEST_STATUS; }>",
        "tags": [
          {
            "name": "param",
            "text": "options The entitlement to begin a refund request for."
          },
          {
            "name": "returns",
            "text": "Returns refundRequestStatus: The status of the\nrefund request. Keep in mind the status could be REFUND_REQUEST_STATUS.USER_CANCELLED"
          }
        ],
        "docs": "iOS 15+ only. Presents a refund request sheet in the current window scene for\nthe latest transaction associated with the `entitlement`.\n\nIf the request was unsuccessful, the promise will return an error.\nIf called in an unsupported platform (Android or iOS < 15), an `UnsupportedPlatformException` will be thrown.",
        "complexTypes": [
          "REFUND_REQUEST_STATUS",
          "PurchasesEntitlementInfo"
        ],
        "slug": "beginrefundrequestforentitlement"
      },
      {
        "name": "beginRefundRequestForProduct",
        "signature": "(options: { storeProduct: PurchasesStoreProduct; }) => Promise<{ refundRequestStatus: REFUND_REQUEST_STATUS; }>",
        "parameters": [
          {
            "name": "options",
            "docs": "The StoreProduct to begin a refund request for.",
            "type": "{ storeProduct: PurchasesStoreProduct; }"
          }
        ],
        "returns": "Promise<{ refundRequestStatus: REFUND_REQUEST_STATUS; }>",
        "tags": [
          {
            "name": "param",
            "text": "options The StoreProduct to begin a refund request for."
          },
          {
            "name": "returns",
            "text": "Returns a REFUND_REQUEST_STATUS: The status of the\nrefund request. Keep in mind the status could be REFUND_REQUEST_STATUS.USER_CANCELLED"
          }
        ],
        "docs": "iOS 15+ only. Presents a refund request sheet in the current window scene for\nthe latest transaction associated with the `product`.\n\nIf the request was unsuccessful, the promise will return an error.\nIf called in an unsupported platform (Android or iOS < 15), an `UnsupportedPlatformException` will be thrown.",
        "complexTypes": [
          "REFUND_REQUEST_STATUS",
          "PurchasesStoreProduct"
        ],
        "slug": "beginrefundrequestforproduct"
      },
      {
        "name": "showInAppMessages",
        "signature": "(options?: { messageTypes?: IN_APP_MESSAGE_TYPE[] | undefined; } | undefined) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "An array of message types that the stores can display inside your app. Values must be one of\n[IN_APP_MESSAGE_TYPE]. By default, is undefined and all message types will be shown.",
            "type": "{ messageTypes?: IN_APP_MESSAGE_TYPE[] | undefined; } | undefined"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options An array of message types that the stores can display inside your app. Values must be one of\n[IN_APP_MESSAGE_TYPE]. By default, is undefined and all message types will be shown."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet."
          }
        ],
        "docs": "Shows in-app messages available from the App Store or Google Play. You need to disable messages from showing\nautomatically using [PurchasesConfiguration.shouldShowInAppMessagesAutomatically].\n\nNote: In iOS, this requires version 16+. In older versions the promise will be resolved successfully\nimmediately.",
        "complexTypes": [
          "IN_APP_MESSAGE_TYPE"
        ],
        "slug": "showinappmessages"
      },
      {
        "name": "isConfigured",
        "signature": "() => Promise<{ isConfigured: boolean; }>",
        "parameters": [],
        "returns": "Promise<{ isConfigured: boolean; }>",
        "tags": [
          {
            "name": "returns",
            "text": "promise with boolean response"
          }
        ],
        "docs": "Check if configure has finished and Purchases has been configured.",
        "complexTypes": [],
        "slug": "isconfigured"
      },
      {
        "name": "overridePreferredUILocale",
        "signature": "(options: { locale: string | null; }) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "The locale string (e.g., \"es-ES\", \"en-US\") or null to use system default.",
            "type": "{ locale: string | null; }"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options The locale string (e.g., \"es-ES\", \"en-US\") or null to use system default."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet."
          }
        ],
        "docs": "Override the preferred UI locale for RevenueCat UI components at runtime. This affects both API requests\nand UI rendering. If the locale changes, this will automatically clear the offerings cache and trigger\na background refetch to get paywall templates with the correct localizations.",
        "complexTypes": [],
        "slug": "overridepreferreduilocale"
      },
      {
        "name": "trackCustomPaywallImpression",
        "signature": "(options?: TrackCustomPaywallImpressionOptions | undefined) => Promise<void>",
        "parameters": [
          {
            "name": "options",
            "docs": "Optional parameters for the impression. Include `paywallId` to identify which paywall was shown,\nand pass `offering` when available so the SDK can derive placement and targeting context.",
            "type": "TrackCustomPaywallImpressionOptions | undefined"
          }
        ],
        "returns": "Promise<void>",
        "tags": [
          {
            "name": "param",
            "text": "options Optional parameters for the impression. Include `paywallId` to identify which paywall was shown,\nand pass `offering` when available so the SDK can derive placement and targeting context."
          },
          {
            "name": "returns",
            "text": "The promise will be rejected if configure has not been called yet."
          }
        ],
        "docs": "Tracks an impression of a custom paywall. Use this to record when a user views your custom paywall\nso that RevenueCat can track paywall analytics.\n\nCall this method once per paywall display, ideally when the paywall first becomes visible to the user,\nnot in callbacks that may fire multiple times for the same display.",
        "complexTypes": [
          "TrackCustomPaywallImpressionOptions"
        ],
        "slug": "trackcustompaywallimpression"
      }
    ],
    "properties": []
  },
  "interfaces": [
    {
      "name": "PurchasesConfiguration",
      "slug": "purchasesconfiguration",
      "docs": "Holds parameters to initialize the SDK.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "apiKey",
          "tags": [],
          "docs": "RevenueCat API Key. Needs to be a string",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "appUserID",
          "tags": [],
          "docs": "A unique id for identifying the user",
          "complexTypes": [],
          "type": "string | null | undefined"
        },
        {
          "name": "purchasesAreCompletedBy",
          "tags": [],
          "docs": "Set this to MY_APP and provide a STOREKIT_VERSION if you have your own IAP implementation and\nwant to only use RevenueCat's backend. Defaults to PURCHASES_ARE_COMPLETED_BY_TYPE.REVENUECAT.\n\nIf you are on Android and setting this to MY_APP, will have to acknowledge the purchases yourself.\nIf your app is only on Android, you may specify any StoreKit version, as it is ignored by the\nAndroid SDK.",
          "complexTypes": [
            "PurchasesAreCompletedBy"
          ],
          "type": "PurchasesAreCompletedBy"
        },
        {
          "name": "userDefaultsSuiteName",
          "tags": [],
          "docs": "An optional string. iOS-only, will be ignored for Android.\nSet this if you would like the RevenueCat SDK to store its preferences in a different NSUserDefaults\nsuite, otherwise it will use standardUserDefaults. Default is null, which will make the SDK use standardUserDefaults.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "storeKitVersion",
          "tags": [],
          "docs": "iOS-only, will be ignored for Android.\n\nBy selecting the DEFAULT value, RevenueCat will automatically select the most appropriate StoreKit version\nfor the app's runtime environment.\n\n- Warning: Make sure you have an In-App Purchase Key configured in your app.\nPlease see https://rev.cat/in-app-purchase-key-configuration for more info.\n\n- Note: StoreKit 2 is only available on iOS 16+. StoreKit 1 will be used for previous iOS versions\nregardless of this setting.",
          "complexTypes": [
            "STOREKIT_VERSION"
          ],
          "type": "STOREKIT_VERSION"
        },
        {
          "name": "useAmazon",
          "tags": [],
          "docs": "An optional boolean. Android only. Required to configure the plugin to be used in the Amazon Appstore.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "shouldShowInAppMessagesAutomatically",
          "tags": [],
          "docs": "Whether we should show store in-app messages automatically. Both Google Play and the App Store provide in-app\nmessages for some situations like billing issues. By default, those messages will be shown automatically.\nThis allows to disable that behavior, so you can display those messages at your convenience. For more information,\ncheck: https://rev.cat/storekit-message and https://rev.cat/googleplayinappmessaging",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "entitlementVerificationMode",
          "tags": [],
          "docs": "Verification strictness levels for [EntitlementInfo].\nSee https://rev.cat/trusted-entitlements for more info.",
          "complexTypes": [
            "ENTITLEMENT_VERIFICATION_MODE"
          ],
          "type": "ENTITLEMENT_VERIFICATION_MODE"
        },
        {
          "name": "pendingTransactionsForPrepaidPlansEnabled",
          "tags": [],
          "docs": "Enable this setting if you want to allow pending purchases for prepaid subscriptions (only supported\nin Google Play). Note that entitlements are not granted until payment is done.\nDisabled by default.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "diagnosticsEnabled",
          "tags": [],
          "docs": "Enabling diagnostics will send some performance and debugging information from the SDK to RevenueCat's servers.\nExamples of this information include response times, cache hits or error codes.\nNo personal identifiable information will be collected.\nThe default value is false.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "automaticDeviceIdentifierCollectionEnabled",
          "tags": [],
          "docs": "Enable this setting to allow the collection of identifiers when setting the identifier for an\nattribution network. For example, when calling `Purchases.setAdjustID` or `Purchases.setAppsflyerID`,\nthe SDK would collect some device identifiers, if available, and send them\nto RevenueCat. This is required by some attribution networks to attribute installs and re-installs.\n\nEnabling this setting does NOT mean we will always collect the identifiers. We will only do so when\nsetting an attribution network ID AND the user has not limited ad tracking on their device.\n\nDefault is enabled.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "preferredUILocaleOverride",
          "tags": [
            {
              "text": "localeString - The locale string (e.g., \"es-ES\", \"en-US\") or null to use system default",
              "name": "param"
            }
          ],
          "docs": "Override the preferred UI locale for RevenueCat UI components at runtime. This affects both API requests and UI rendering.\nThis will automatically clear the offerings cache and trigger a background refetch to get paywall templates with the correct localizations.",
          "complexTypes": [],
          "type": "string | undefined"
        },
        {
          "name": "useExternalPurchaseCustomLinks",
          "tags": [
            {
              "text": "This API is experimental and may be changed or removed in a future release.",
              "name": "experimental"
            }
          ],
          "docs": "iOS-only, will be ignored for Android.\n\nWhether a web purchase button that opens its link in the external browser goes through Apple's\nexternal purchase custom link flow: the customer is shown Apple's disclosure notice, and the\npurchase is reported to Apple.\n\nDisabled by default. Enabling it requires the app to carry Apple's external purchase link\nentitlement, otherwise no purchase can be made outside the App Store.",
          "complexTypes": [],
          "type": "boolean | undefined"
        },
        {
          "name": "enableExternalPurchasesInSimulator",
          "tags": [
            {
              "text": "This API is experimental and may be changed or removed in a future release.",
              "name": "experimental"
            }
          ],
          "docs": "iOS-only, will be ignored for Android.\n\nWhether the simulator offers external purchases in any storefront. When disabled, the simulator\nbehaves as a device does for a customer who is not eligible.\n\nEnabled by default. Has no effect on a physical device, nor while `useExternalPurchaseCustomLinks`\nis disabled.",
          "complexTypes": [],
          "type": "boolean | undefined"
        }
      ]
    },
    {
      "name": "PurchasesVirtualCurrencies",
      "slug": "purchasesvirtualcurrencies",
      "docs": "The VirtualCurrencies object contains all the virtual currencies associated to the user.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "all",
          "tags": [],
          "docs": "Map of all VirtualCurrency (`PurchasesVirtualCurrency`) objects keyed by virtual currency code.",
          "complexTypes": [
            "PurchasesVirtualCurrency"
          ],
          "type": "{ [key: string]: PurchasesVirtualCurrency; }"
        }
      ]
    },
    {
      "name": "PurchasesVirtualCurrency",
      "slug": "purchasesvirtualcurrency",
      "docs": "The VirtualCurrency object represents information about a virtual currency in the app.\nUse this object to access information about a virtual currency, such as its current balance.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "balance",
          "tags": [],
          "docs": "The virtual currency's balance.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "name",
          "tags": [],
          "docs": "The virtual currency's name.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "code",
          "tags": [],
          "docs": "The virtual currency's code.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "serverDescription",
          "tags": [],
          "docs": "The virtual currency's description defined in the RevenueCat dashboard.",
          "complexTypes": [],
          "type": "string | null"
        }
      ]
    },
    {
      "name": "CustomerInfo",
      "slug": "customerinfo",
      "docs": "Type containing all information regarding the customer",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "entitlements",
          "tags": [],
          "docs": "Entitlements attached to this customer info",
          "complexTypes": [
            "PurchasesEntitlementInfos"
          ],
          "type": "PurchasesEntitlementInfos"
        },
        {
          "name": "activeSubscriptions",
          "tags": [],
          "docs": "Set of active subscription skus",
          "complexTypes": [],
          "type": "string[]"
        },
        {
          "name": "allPurchasedProductIdentifiers",
          "tags": [],
          "docs": "Set of purchased skus, active and inactive",
          "complexTypes": [],
          "type": "string[]"
        },
        {
          "name": "latestExpirationDate",
          "tags": [],
          "docs": "The latest expiration date of all purchased skus",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "firstSeen",
          "tags": [],
          "docs": "The date this user was first seen in RevenueCat.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "originalAppUserId",
          "tags": [],
          "docs": "The original App User Id recorded for this user.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "requestDate",
          "tags": [],
          "docs": "Date when this info was requested",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "allExpirationDates",
          "tags": [],
          "docs": "Map of skus to expiration dates",
          "complexTypes": [],
          "type": "{ [key: string]: string | null; }"
        },
        {
          "name": "allPurchaseDates",
          "tags": [],
          "docs": "Map of skus to purchase dates",
          "complexTypes": [],
          "type": "{ [key: string]: string | null; }"
        },
        {
          "name": "originalApplicationVersion",
          "tags": [],
          "docs": "Returns the version number for the version of the application when the\nuser bought the app. Use this for grandfathering users when migrating\nto subscriptions.\n\nThis corresponds to the value of CFBundleVersion (in iOS) in the\nInfo.plist file when the purchase was originally made. This is always null\nin Android",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "originalPurchaseDate",
          "tags": [],
          "docs": "Returns the purchase date for the version of the application when the user bought the app.\nUse this for grandfathering users when migrating to subscriptions.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "managementURL",
          "tags": [],
          "docs": "URL to manage the active subscription of the user. If this user has an active iOS\nsubscription, this will point to the App Store, if the user has an active Play Store subscription\nit will point there. If there are no active subscriptions it will be null.\nIf there are multiple for different platforms, it will point to the device store.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "nonSubscriptionTransactions",
          "tags": [],
          "docs": "List of all non subscription transactions. Use this to fetch the history of\nnon-subscription purchases",
          "complexTypes": [
            "PurchasesStoreTransaction"
          ],
          "type": "PurchasesStoreTransaction[]"
        },
        {
          "name": "subscriptionsByProductIdentifier",
          "tags": [],
          "docs": "Information about the customer's subscriptions for each product identifier.",
          "complexTypes": [
            "PurchasesSubscriptionInfo"
          ],
          "type": "{ [key: string]: PurchasesSubscriptionInfo; }"
        }
      ]
    },
    {
      "name": "PurchasesEntitlementInfos",
      "slug": "purchasesentitlementinfos",
      "docs": "Contains all the entitlements associated to the user.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "all",
          "tags": [],
          "docs": "Map of all EntitlementInfo (`PurchasesEntitlementInfo`) objects (active and inactive) keyed by entitlement identifier.",
          "complexTypes": [
            "PurchasesEntitlementInfo"
          ],
          "type": "{ [key: string]: PurchasesEntitlementInfo; }"
        },
        {
          "name": "active",
          "tags": [],
          "docs": "Map of active EntitlementInfo (`PurchasesEntitlementInfo`) objects keyed by entitlement identifier.",
          "complexTypes": [
            "PurchasesEntitlementInfo"
          ],
          "type": "{ [key: string]: PurchasesEntitlementInfo; }"
        },
        {
          "name": "verification",
          "tags": [],
          "docs": "If entitlement verification was enabled, the result of that verification. If not, VerificationResult.NOT_REQUESTED",
          "complexTypes": [
            "VERIFICATION_RESULT"
          ],
          "type": "VERIFICATION_RESULT"
        }
      ]
    },
    {
      "name": "PurchasesEntitlementInfo",
      "slug": "purchasesentitlementinfo",
      "docs": "The EntitlementInfo object gives you access to all of the information about the status of a user entitlement.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "identifier",
          "tags": [],
          "docs": "The entitlement identifier configured in the RevenueCat dashboard",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "isActive",
          "tags": [],
          "docs": "True if the user has access to this entitlement",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "willRenew",
          "tags": [],
          "docs": "True if the underlying subscription is set to renew at the end of the billing period (expirationDate).",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "periodType",
          "tags": [],
          "docs": "The last period type this entitlement was in. Either: NORMAL, INTRO, TRIAL, PREPAID.",
          "complexTypes": [
            "PeriodType"
          ],
          "type": "PeriodType"
        },
        {
          "name": "latestPurchaseDate",
          "tags": [],
          "docs": "The latest purchase or renewal date for the entitlement in ISO8601 format.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "latestPurchaseDateMillis",
          "tags": [],
          "docs": "The latest purchase or renewal date for the entitlement in milliseconds.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "originalPurchaseDate",
          "tags": [],
          "docs": "The first date this entitlement was purchased in ISO8601 format.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "originalPurchaseDateMillis",
          "tags": [],
          "docs": "The first date this entitlement was purchased in milliseconds.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "expirationDate",
          "tags": [],
          "docs": "The expiration date for the entitlement in ISO8601, can be `null` for lifetime access.\nIf the `periodType` is `TRIAL`, this is the trial expiration date.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "expirationDateMillis",
          "tags": [],
          "docs": "The expiration date for the entitlement in milliseconds, can be `null` for lifetime access.\nIf the `periodType` is `TRIAL`, this is the trial expiration date.",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "store",
          "tags": [],
          "docs": "The store where this entitlement was unlocked from.",
          "complexTypes": [
            "Store"
          ],
          "type": "Store"
        },
        {
          "name": "productIdentifier",
          "tags": [],
          "docs": "The product identifier that unlocked this entitlement",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "productPlanIdentifier",
          "tags": [],
          "docs": "The product plan identifier that unlocked this entitlement. Android subscriptions only, null on consumables and iOS.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "isSandbox",
          "tags": [],
          "docs": "False if this entitlement is unlocked via a production purchase",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "unsubscribeDetectedAt",
          "tags": [],
          "docs": "The date an unsubscribe was detected in ISO8601 format. Can be `null`.\n\nEntitlement may still be active even if user has unsubscribed. Check the `isActive` property.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "unsubscribeDetectedAtMillis",
          "tags": [],
          "docs": "The date an unsubscribe was detected in milliseconds. Can be `null`.\n\nEntitlement may still be active even if user has unsubscribed. Check the `isActive` property.",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "billingIssueDetectedAt",
          "tags": [],
          "docs": "The date a billing issue was detected in ISO8601 format. Can be `null` if there is no billing issue or an\nissue has been resolved\n\nEntitlement may still be active even if there is a billing issue. Check the `isActive` property.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "billingIssueDetectedAtMillis",
          "tags": [],
          "docs": "The date a billing issue was detected in milliseconds. Can be `null` if there is no billing issue or an\nissue has been resolved\n\nEntitlement may still be active even if there is a billing issue. Check the `isActive` property.",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "ownershipType",
          "tags": [],
          "docs": "Supported ownership types for an entitlement.\nPURCHASED if the purchase was made directly by this user.\nFAMILY_SHARED if the purchase has been shared to this user by a family member.\nASSIGNED if the purchase has been assigned to this user through an organization.\nUNKNOWN if the purchase has no or an unknown ownership type.",
          "complexTypes": [
            "OwnershipType"
          ],
          "type": "OwnershipType"
        },
        {
          "name": "verification",
          "tags": [],
          "docs": "If entitlement verification was enabled, the result of that verification. If not, VerificationResult.NOT_REQUESTED",
          "complexTypes": [
            "VERIFICATION_RESULT"
          ],
          "type": "VERIFICATION_RESULT"
        }
      ]
    },
    {
      "name": "PurchasesStoreTransaction",
      "slug": "purchasesstoretransaction",
      "docs": "Represents a non-subscription transaction in the Store.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "transactionIdentifier",
          "tags": [],
          "docs": "Id of the transaction.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "productIdentifier",
          "tags": [],
          "docs": "Product Id associated with the transaction.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "purchaseDate",
          "tags": [],
          "docs": "Purchase date of the transaction in ISO 8601 format.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "purchaseToken",
          "tags": [],
          "docs": "Purchase token of the transaction. Android only.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "originalJson",
          "tags": [],
          "docs": "The original purchase JSON provided by the store as a string. Android only, null on iOS and some stores.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "signature",
          "tags": [],
          "docs": "The purchase signature. Google Play only, null on iOS and other stores.",
          "complexTypes": [],
          "type": "string | null"
        }
      ]
    },
    {
      "name": "PurchasesSubscriptionInfo",
      "slug": "purchasessubscriptioninfo",
      "docs": "Subscription purchases of the Customer.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "productIdentifier",
          "tags": [],
          "docs": "The product identifier.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "purchaseDate",
          "tags": [],
          "docs": "Date when the last subscription period started.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "originalPurchaseDate",
          "tags": [],
          "docs": "Date when this subscription first started. This property does not update with renewals.\nThis property also does not update for product changes within a subscription group or\nre-subscriptions by lapsed subscribers.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "expiresDate",
          "tags": [],
          "docs": "Date when the subscription expires/expired",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "store",
          "tags": [],
          "docs": "Store where the subscription was purchased.",
          "complexTypes": [
            "Store"
          ],
          "type": "Store"
        },
        {
          "name": "unsubscribeDetectedAt",
          "tags": [],
          "docs": "Date when RevenueCat detected that auto-renewal was turned off for this subscription.\nNote the subscription may still be active, check the `expiresDate` attribute.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "isSandbox",
          "tags": [],
          "docs": "Whether or not the purchase was made in sandbox mode.",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "billingIssuesDetectedAt",
          "tags": [],
          "docs": "Date when RevenueCat detected any billing issues with this subscription.\nIf and when the billing issue gets resolved, this field is set to nil.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "gracePeriodExpiresDate",
          "tags": [],
          "docs": "Date when any grace period for this subscription expires/expired.\nnil if the customer has never been in a grace period.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "ownershipType",
          "tags": [],
          "docs": "How the Customer received access to this subscription:\n- [OwnershipType.PURCHASED]: The customer bought the subscription.\n- [OwnershipType.FAMILY_SHARED]: The Customer has access to the product via their family.\n- [OwnershipType.ASSIGNED]: The Customer has been assigned access to the product through an organization.",
          "complexTypes": [
            "OwnershipType"
          ],
          "type": "OwnershipType"
        },
        {
          "name": "periodType",
          "tags": [],
          "docs": "Type of the current subscription period:\n- [PeriodType.NORMAL]: The product is in a normal period (default)\n- [PeriodType.TRIAL]: The product is in a free trial period\n- [PeriodType.INTRO]: The product is in an introductory pricing period\n- [PeriodType.PREPAID]: The product is in a prepaid pricing period",
          "complexTypes": [
            "PeriodType"
          ],
          "type": "PeriodType"
        },
        {
          "name": "refundedAt",
          "tags": [],
          "docs": "Date when RevenueCat detected a refund of this subscription.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "storeTransactionId",
          "tags": [],
          "docs": "The transaction id in the store of the subscription.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "isActive",
          "tags": [],
          "docs": "Whether the subscription is currently active.",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "willRenew",
          "tags": [],
          "docs": "Whether the subscription will renew at the next billing period.",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "autoResumeDate",
          "tags": [],
          "docs": "Date when a paused subscription is expected to automatically resume.\nOnly set for Google Play subscriptions that have been paused; null otherwise.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "displayName",
          "tags": [],
          "docs": "The display name of the subscription as configured in the RevenueCat dashboard.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "managementURL",
          "tags": [],
          "docs": "The management URL for this subscription.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "productPlanIdentifier",
          "tags": [],
          "docs": "The base plan identifier that unlocked this subscription (Google Play base plans\nand Apple purchases with non-upfront billing plans).",
          "complexTypes": [],
          "type": "string | null"
        }
      ]
    },
    {
      "name": "PurchasesError",
      "slug": "purchaseserror",
      "docs": "Type encapsulating an error in an SDK operation.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "code",
          "tags": [],
          "docs": "",
          "complexTypes": [
            "PURCHASES_ERROR_CODE"
          ],
          "type": "PURCHASES_ERROR_CODE"
        },
        {
          "name": "message",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "readableErrorCode",
          "tags": [
            {
              "text": "access readableErrorCode through userInfo.readableErrorCode",
              "name": "deprecated"
            }
          ],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "userInfo",
          "tags": [],
          "docs": "",
          "complexTypes": [
            "ErrorInfo"
          ],
          "type": "ErrorInfo"
        },
        {
          "name": "underlyingErrorMessage",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "userCancelled",
          "tags": [
            {
              "text": "use code === Purchases.PURCHASES_ERROR_CODE.PURCHASE_CANCELLED_ERROR instead",
              "name": "deprecated"
            }
          ],
          "docs": "",
          "complexTypes": [],
          "type": "boolean | null"
        }
      ]
    },
    {
      "name": "ErrorInfo",
      "slug": "errorinfo",
      "docs": "Type encapsulating extra info on an error in an SDK operation.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "readableErrorCode",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "PurchasesOfferings",
      "slug": "purchasesofferings",
      "docs": "Contains all the offerings configured in RevenueCat dashboard.\nFor more info see https://docs.revenuecat.com/docs/entitlements",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "all",
          "tags": [],
          "docs": "Map of all Offerings [PurchasesOffering] objects keyed by their identifier.",
          "complexTypes": [
            "PurchasesOffering"
          ],
          "type": "{ [key: string]: PurchasesOffering; }"
        },
        {
          "name": "current",
          "tags": [],
          "docs": "Current offering configured in the RevenueCat dashboard.",
          "complexTypes": [
            "PurchasesOffering"
          ],
          "type": "PurchasesOffering | null"
        }
      ]
    },
    {
      "name": "PurchasesOffering",
      "slug": "purchasesoffering",
      "docs": "An offering is a collection of Packages (`PurchasesPackage`) available for the user to purchase.\nFor more info see https://docs.revenuecat.com/docs/entitlements",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "identifier",
          "tags": [],
          "docs": "Unique identifier defined in RevenueCat dashboard.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "serverDescription",
          "tags": [],
          "docs": "Offering description defined in RevenueCat dashboard.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "metadata",
          "tags": [],
          "docs": "Offering metadata defined in RevenueCat dashboard. To access values, you need\nto check the type beforehand. For example:\nconst my_unknown_value: unknown = offering.metadata['my_key'];\nconst my_string_value: string | undefined = typeof(my_unknown_value) === 'string' ? my_unknown_value : undefined;",
          "complexTypes": [],
          "type": "{ [key: string]: unknown; }"
        },
        {
          "name": "availablePackages",
          "tags": [],
          "docs": "Array of `Package` objects available for purchase.",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage[]"
        },
        {
          "name": "lifetime",
          "tags": [],
          "docs": "Lifetime package type configured in the RevenueCat dashboard, if available.",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage | null"
        },
        {
          "name": "annual",
          "tags": [],
          "docs": "Annual package type configured in the RevenueCat dashboard, if available.",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage | null"
        },
        {
          "name": "sixMonth",
          "tags": [],
          "docs": "Six month package type configured in the RevenueCat dashboard, if available.",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage | null"
        },
        {
          "name": "threeMonth",
          "tags": [],
          "docs": "Three month package type configured in the RevenueCat dashboard, if available.",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage | null"
        },
        {
          "name": "twoMonth",
          "tags": [],
          "docs": "Two month package type configured in the RevenueCat dashboard, if available.",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage | null"
        },
        {
          "name": "monthly",
          "tags": [],
          "docs": "Monthly package type configured in the RevenueCat dashboard, if available.",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage | null"
        },
        {
          "name": "weekly",
          "tags": [],
          "docs": "Weekly package type configured in the RevenueCat dashboard, if available.",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage | null"
        },
        {
          "name": "webCheckoutUrl",
          "tags": [],
          "docs": "URL to use for web checkout for this offering. iOS and Android only. Null if not available.",
          "complexTypes": [],
          "type": "string | null"
        }
      ]
    },
    {
      "name": "PurchasesPackage",
      "slug": "purchasespackage",
      "docs": "Contains information about the product available for the user to purchase.\nFor more info see https://docs.revenuecat.com/docs/entitlements",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "identifier",
          "tags": [],
          "docs": "Unique identifier for this package. Can be one a predefined package type or a custom one.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "packageType",
          "tags": [],
          "docs": "Package type for the product. Will be one of [PACKAGE_TYPE].",
          "complexTypes": [
            "PACKAGE_TYPE"
          ],
          "type": "PACKAGE_TYPE"
        },
        {
          "name": "product",
          "tags": [],
          "docs": "Product assigned to this package.",
          "complexTypes": [
            "PurchasesStoreProduct"
          ],
          "type": "PurchasesStoreProduct"
        },
        {
          "name": "offeringIdentifier",
          "tags": [
            {
              "text": "Use presentedOfferingContext",
              "name": "deprecated"
            }
          ],
          "docs": "Offering this package belongs to.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "presentedOfferingContext",
          "tags": [],
          "docs": "Offering context this package belongs to.\nNull if not using offerings or if fetched directly from store via getProducts.",
          "complexTypes": [
            "PresentedOfferingContext"
          ],
          "type": "PresentedOfferingContext"
        },
        {
          "name": "webCheckoutUrl",
          "tags": [],
          "docs": "URL to use for web checkout for this package. iOS and Android only. Null if not available.",
          "complexTypes": [],
          "type": "string | null"
        }
      ]
    },
    {
      "name": "PurchasesStoreProduct",
      "slug": "purchasesstoreproduct",
      "docs": "Type representing a product from the Store.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "identifier",
          "tags": [],
          "docs": "Product Id.\n\nFor Google Play subscriptions with a base plan, this is `productId:basePlanId`.\n\nFor App Store products with a billing plan\n(like monthly subscriptions with a 12-month commitment), this is\n`productId:billingPlan` (like `productId:monthly`).",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "description",
          "tags": [],
          "docs": "Description of the product.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "title",
          "tags": [],
          "docs": "Title of the product.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "price",
          "tags": [],
          "docs": "Price of the product in the local currency.\nContains the price value of defaultOption for Google Play.\n\nFor monthly subscriptions with a 12-month commitment on the Apple App Store, the\nprice will reflect the total amount paid across the commitment.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "priceString",
          "tags": [],
          "docs": "Formatted price of the item, including its currency sign.\nContains the formatted price value of defaultOption for Google Play.\n\nFor monthly subscriptions with a 12-month commitment on the Apple App Store, the\nprice string will reflect the total amount paid across the commitment.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "pricePerWeek",
          "tags": [],
          "docs": "Null for INAPP products. The price of the PurchasesStoreProduct in a weekly recurrence.\nThis means that, for example, if the period is monthly, the price will be\ndivided by 4. Note that this value may be an approximation. For Google subscriptions,\nthis value will use the basePlan to calculate the value.",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "pricePerMonth",
          "tags": [],
          "docs": "Null for INAPP products. The price of the PurchasesStoreProduct in a monthly recurrence.\nThis means that, for example, if the period is annual, the price will be\ndivided by 12. Note that this value may be an approximation. For Google subscriptions,\nthis value will use the basePlan to calculate the value.",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "pricePerYear",
          "tags": [],
          "docs": "Null for INAPP products. The price of the PurchasesStoreProduct in a yearly recurrence.\nThis means that, for example, if the period is monthly, the price will be multiplied by\n12. Note that this value may be an approximation. For Google subscriptions, this value\nwill use the basePlan to calculate the value.",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "pricePerWeekString",
          "tags": [],
          "docs": "Null for INAPP products. The price of the PurchasesStoreProduct formatted for the current\nlocale in a weekly recurrence. This means that, for example, if the period is monthly,\nthe price will be divided by 4. It uses a currency formatter to format the price in the\ngiven locale. Note that this value may be an approximation. For Google subscriptions,\nthis value will use the basePlan to calculate the value.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "pricePerMonthString",
          "tags": [],
          "docs": "Null for INAPP products. The price of the PurchasesStoreProduct formatted for the current\nlocale in a monthly recurrence. This means that, for example, if the period is annual,\nthe price will be divided by 12. It uses a currency formatter to format the price in the\ngiven locale. Note that this value may be an approximation. For Google subscriptions,\nthis value will use the basePlan to calculate the value.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "pricePerYearString",
          "tags": [],
          "docs": "Null for INAPP products. The price of the PurchasesStoreProduct formatted for the current\nlocale in a yearly recurrence. This means that, for example, if the period is monthly,\nthe price will be multiplied by 12. It uses a currency formatter to format the price in the\ngiven locale. Note that this value may be an approximation. For Google subscriptions,\nthis value will use the basePlan to calculate the value.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "currencyCode",
          "tags": [],
          "docs": "Currency code for price and original price.\nContains the currency code value of defaultOption for Google Play.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "introPrice",
          "tags": [],
          "docs": "Introductory price.",
          "complexTypes": [
            "PurchasesIntroPrice"
          ],
          "type": "PurchasesIntroPrice | null"
        },
        {
          "name": "discounts",
          "tags": [],
          "docs": "Collection of discount offers for a product. Null for Android.",
          "complexTypes": [
            "PurchasesStoreProductDiscount"
          ],
          "type": "PurchasesStoreProductDiscount[] | null"
        },
        {
          "name": "productCategory",
          "tags": [],
          "docs": "Product category.",
          "complexTypes": [
            "PRODUCT_CATEGORY"
          ],
          "type": "PRODUCT_CATEGORY | null"
        },
        {
          "name": "productType",
          "tags": [],
          "docs": "The specific type of subscription or one time purchase this product represents.\nImportant: In iOS, if using StoreKit 1, we cannot determine the type.",
          "complexTypes": [
            "PRODUCT_TYPE"
          ],
          "type": "PRODUCT_TYPE"
        },
        {
          "name": "subscriptionPeriod",
          "tags": [],
          "docs": "Subscription period, specified in ISO 8601 format. For example,\nP1W equates to one week, P1M equates to one month,\nP3M equates to three months, P6M equates to six months,\nand P1Y equates to one year.\nNote: Not available for Amazon.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "defaultOption",
          "tags": [],
          "docs": "Default subscription option for a product. Google Play only.",
          "complexTypes": [
            "SubscriptionOption"
          ],
          "type": "SubscriptionOption | null"
        },
        {
          "name": "subscriptionOptions",
          "tags": [],
          "docs": "Collection of subscription options for a product. Google Play only.",
          "complexTypes": [
            "SubscriptionOption"
          ],
          "type": "SubscriptionOption[] | null"
        },
        {
          "name": "presentedOfferingIdentifier",
          "tags": [
            {
              "text": "Use presentedOfferingContext",
              "name": "deprecated"
            }
          ],
          "docs": "Offering identifier the store product was presented from.\nNull if not using offerings or if fetched directly from store via getProducts.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "presentedOfferingContext",
          "tags": [],
          "docs": "Offering context this package belongs to.\nNull if not using offerings or if fetched directly from store via getProducts.",
          "complexTypes": [
            "PresentedOfferingContext"
          ],
          "type": "PresentedOfferingContext | null"
        },
        {
          "name": "installmentsInfo",
          "tags": [],
          "docs": "For installment subscriptions, the details of the installment plan the customer commits to.\nNull for non-installment subscriptions.\niOS only. Always null on Android, use the installmentsInfo of the defaultOption or\nsubscriptionOptions instead.",
          "complexTypes": [
            "InstallmentsInfo"
          ],
          "type": "InstallmentsInfo | null"
        }
      ]
    },
    {
      "name": "PurchasesIntroPrice",
      "slug": "purchasesintroprice",
      "docs": "Contains information about the introductory price for a product",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "price",
          "tags": [],
          "docs": "Price in the local currency.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "priceString",
          "tags": [],
          "docs": "Formatted price, including its currency sign, such as €3.99.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "cycles",
          "tags": [],
          "docs": "Number of subscription billing periods for which the user will be given the discount, such as 3.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "period",
          "tags": [],
          "docs": "Billing period of the discount, specified in ISO 8601 format.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "periodUnit",
          "tags": [],
          "docs": "Unit for the billing period of the discount, can be DAY, WEEK, MONTH or YEAR.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "periodNumberOfUnits",
          "tags": [],
          "docs": "Number of units for the billing period of the discount.",
          "complexTypes": [],
          "type": "number"
        }
      ]
    },
    {
      "name": "PurchasesStoreProductDiscount",
      "slug": "purchasesstoreproductdiscount",
      "docs": "Contains information about a discount offer for a product",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "identifier",
          "tags": [],
          "docs": "Identifier of the discount.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "price",
          "tags": [],
          "docs": "Price in the local currency.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "priceString",
          "tags": [],
          "docs": "Formatted price, including its currency sign, such as €3.99.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "cycles",
          "tags": [],
          "docs": "Number of subscription billing periods for which the user will be given the discount, such as 3.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "period",
          "tags": [],
          "docs": "Billing period of the discount, specified in ISO 8601 format.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "periodUnit",
          "tags": [],
          "docs": "Unit for the billing period of the discount, can be DAY, WEEK, MONTH or YEAR.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "periodNumberOfUnits",
          "tags": [],
          "docs": "Number of units for the billing period of the discount.",
          "complexTypes": [],
          "type": "number"
        }
      ]
    },
    {
      "name": "SubscriptionOption",
      "slug": "subscriptionoption",
      "docs": "Contains all details associated with a SubscriptionOption\nUsed only for Google",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "id",
          "tags": [],
          "docs": "Identifier of the subscription option\nIf this SubscriptionOption represents a base plan, this will be the basePlanId.\nIf it represents an offer, it will be basePlanId:offerId",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "storeProductId",
          "tags": [],
          "docs": "Identifier of the StoreProduct associated with this SubscriptionOption\nThis will be subId:basePlanId",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "productId",
          "tags": [],
          "docs": "Identifer of the subscription associated with this SubscriptionOption\nThis will be subId",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "pricingPhases",
          "tags": [],
          "docs": "Pricing phases defining a user's payment plan for the product over time.",
          "complexTypes": [
            "PricingPhase"
          ],
          "type": "PricingPhase[]"
        },
        {
          "name": "tags",
          "tags": [],
          "docs": "Tags defined on the base plan or offer. Empty for Amazon.",
          "complexTypes": [],
          "type": "string[]"
        },
        {
          "name": "isBasePlan",
          "tags": [],
          "docs": "True if this SubscriptionOption represents a subscription base plan (rather than an offer).",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "billingPeriod",
          "tags": [],
          "docs": "The subscription period of fullPricePhase (after free and intro trials).",
          "complexTypes": [
            "Period"
          ],
          "type": "Period | null"
        },
        {
          "name": "isPrepaid",
          "tags": [],
          "docs": "True if the subscription is pre-paid.",
          "complexTypes": [],
          "type": "boolean"
        },
        {
          "name": "fullPricePhase",
          "tags": [],
          "docs": "The full price PricingPhase of the subscription.\nLooks for the last price phase of the SubscriptionOption.",
          "complexTypes": [
            "PricingPhase"
          ],
          "type": "PricingPhase | null"
        },
        {
          "name": "freePhase",
          "tags": [],
          "docs": "The free trial PricingPhase of the subscription.\nLooks for the first pricing phase of the SubscriptionOption where amountMicros is 0.\nThere can be a freeTrialPhase and an introductoryPhase in the same SubscriptionOption.",
          "complexTypes": [
            "PricingPhase"
          ],
          "type": "PricingPhase | null"
        },
        {
          "name": "introPhase",
          "tags": [],
          "docs": "The intro trial PricingPhase of the subscription.\nLooks for the first pricing phase of the SubscriptionOption where amountMicros is greater than 0.\nThere can be a freeTrialPhase and an introductoryPhase in the same SubscriptionOption.",
          "complexTypes": [
            "PricingPhase"
          ],
          "type": "PricingPhase | null"
        },
        {
          "name": "presentedOfferingIdentifier",
          "tags": [
            {
              "text": "Use presentedOfferingContext",
              "name": "deprecated"
            }
          ],
          "docs": "Offering identifier the subscription option was presented from",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "presentedOfferingContext",
          "tags": [],
          "docs": "Offering context this package belongs to.\nNull if not using offerings or if fetched directly from store via getProducts.",
          "complexTypes": [
            "PresentedOfferingContext"
          ],
          "type": "PresentedOfferingContext | null"
        },
        {
          "name": "installmentsInfo",
          "tags": [],
          "docs": "For installment subscriptions, the details of the installment plan the customer commits to.\nNull for non-installment subscriptions.\nInstallment plans are only available for Google Play subscriptions.",
          "complexTypes": [
            "InstallmentsInfo"
          ],
          "type": "InstallmentsInfo | null"
        }
      ]
    },
    {
      "name": "PricingPhase",
      "slug": "pricingphase",
      "docs": "Contains all the details associated with a PricingPhase",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "billingPeriod",
          "tags": [],
          "docs": "Billing period for which the PricingPhase applies",
          "complexTypes": [
            "Period"
          ],
          "type": "Period"
        },
        {
          "name": "recurrenceMode",
          "tags": [],
          "docs": "Recurrence mode of the PricingPhase",
          "complexTypes": [
            "RECURRENCE_MODE"
          ],
          "type": "RECURRENCE_MODE | null"
        },
        {
          "name": "billingCycleCount",
          "tags": [],
          "docs": "Number of cycles for which the pricing phase applies.\nNull for infiniteRecurring or finiteRecurring recurrence modes.",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "price",
          "tags": [],
          "docs": "Price of the PricingPhase",
          "complexTypes": [
            "Price"
          ],
          "type": "Price"
        },
        {
          "name": "offerPaymentMode",
          "tags": [],
          "docs": "Indicates how the pricing phase is charged for finiteRecurring pricing phases",
          "complexTypes": [
            "OFFER_PAYMENT_MODE"
          ],
          "type": "OFFER_PAYMENT_MODE | null"
        }
      ]
    },
    {
      "name": "Period",
      "slug": "period",
      "docs": "Contains all the details associated with a Period",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "unit",
          "tags": [],
          "docs": "The number of period units: day, week, month, year, unknown",
          "complexTypes": [
            "PERIOD_UNIT"
          ],
          "type": "PERIOD_UNIT"
        },
        {
          "name": "value",
          "tags": [],
          "docs": "The increment of time that a subscription period is specified in",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "iso8601",
          "tags": [],
          "docs": "Specified in ISO 8601 format. For example, P1W equates to one week,\nP1M equates to one month, P3M equates to three months, P6M equates to six months,\nand P1Y equates to one year",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "Price",
      "slug": "price",
      "docs": "Contains all the details associated with a Price",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "formatted",
          "tags": [],
          "docs": "Formatted price of the item, including its currency sign. For example $3.00",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "amountMicros",
          "tags": [],
          "docs": "Price in micro-units, where 1,000,000 micro-units equal one unit of the currency.\n\nFor example, if price is \"€7.99\", price_amount_micros is 7,990,000. This value represents\nthe localized, rounded price for a particular currency.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "currencyCode",
          "tags": [],
          "docs": "Returns ISO 4217 currency code for price and original price.\n\nFor example, if price is specified in British pounds sterling, price_currency_code is \"GBP\".\nIf currency code cannot be determined, currency symbol is returned.",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "PresentedOfferingContext",
      "slug": "presentedofferingcontext",
      "docs": "Contains data about the context in which an offering was presented.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "offeringIdentifier",
          "tags": [],
          "docs": "The identifier of the offering used to obtain this object.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "placementIdentifier",
          "tags": [],
          "docs": "The identifier of the placement used to obtain this object.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "targetingContext",
          "tags": [],
          "docs": "The revision of the targeting used to obtain this object.",
          "complexTypes": [
            "PresentedOfferingTargetingContext"
          ],
          "type": "PresentedOfferingTargetingContext | null"
        }
      ]
    },
    {
      "name": "PresentedOfferingTargetingContext",
      "slug": "presentedofferingtargetingcontext",
      "docs": "Contains data about the context in which an offering was presented.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "revision",
          "tags": [],
          "docs": "The revision of the targeting used to obtain this object.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "ruleId",
          "tags": [],
          "docs": "The rule id from the targeting used to obtain this object.",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "InstallmentsInfo",
      "slug": "installmentsinfo",
      "docs": "Type containing information of installment subscriptions.\nSupported in Google Play (via SubscriptionOption) and iOS (via PurchasesStoreProduct).",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "commitmentPaymentsCount",
          "tags": [],
          "docs": "Number of payments the customer commits to in order to purchase the subscription.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "renewalCommitmentPaymentsCount",
          "tags": [],
          "docs": "After the commitment payments are complete, the number of payments the user commits to upon a renewal.\nOn iOS this is always equal to commitmentPaymentsCount.",
          "complexTypes": [],
          "type": "number"
        },
        {
          "name": "commitmentInstallmentPeriod",
          "tags": [],
          "docs": "Duration of each installment, specified in ISO 8601 format. For example, P1M equates to one month.\niOS only. Null on Android.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "installmentBillingPrice",
          "tags": [],
          "docs": "Price charged for each installment billing period.\niOS only. Null on Android.",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "installmentBillingPriceString",
          "tags": [],
          "docs": "Formatted price charged for each installment billing period, including its currency sign.\niOS only. Null on Android.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "commitmentTotalPeriod",
          "tags": [],
          "docs": "Total duration of the customer's installment commitment, specified in ISO 8601 format.\niOS only. Null on Android.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "commitmentTotalPrice",
          "tags": [],
          "docs": "Total price the customer commits to paying across all installments.\niOS only. Null on Android.",
          "complexTypes": [],
          "type": "number | null"
        },
        {
          "name": "commitmentTotalPriceString",
          "tags": [],
          "docs": "Formatted total price the customer commits to paying across all installments, including its currency sign.\niOS only. Null on Android.",
          "complexTypes": [],
          "type": "string | null"
        },
        {
          "name": "billingPlanType",
          "tags": [],
          "docs": "The billing plan used for the installments.\niOS only. Null on Android.",
          "complexTypes": [
            "BILLING_PLAN_TYPE"
          ],
          "type": "BILLING_PLAN_TYPE | null"
        }
      ]
    },
    {
      "name": "GetProductOptions",
      "slug": "getproductoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "productIdentifiers",
          "tags": [],
          "docs": "Array of product identifiers to obtain",
          "complexTypes": [],
          "type": "string[]"
        },
        {
          "name": "type",
          "tags": [],
          "docs": "Optional type of products to fetch, can be SUBSCRIPTION or NON_SUBSCRIPTION. SUBSCRIPTION by default. Ignored in iOS.",
          "complexTypes": [
            "PRODUCT_CATEGORY"
          ],
          "type": "PRODUCT_CATEGORY"
        }
      ]
    },
    {
      "name": "PurchaseStoreProductOptions",
      "slug": "purchasestoreproductoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "product",
          "tags": [],
          "docs": "The product you want to purchase",
          "complexTypes": [
            "PurchasesStoreProduct"
          ],
          "type": "PurchasesStoreProduct"
        },
        {
          "name": "googleProductChangeInfo",
          "tags": [
            {
              "text": "Use storeProductChangeInfo instead.",
              "name": "deprecated"
            }
          ],
          "docs": "Android only. Optional GoogleProductChangeInfo you\nwish to upgrade from containing the oldProductIdentifier and the optional prorationMode.\nIf both googleProductChangeInfo and storeProductChangeInfo are provided,\nstoreProductChangeInfo is used and googleProductChangeInfo is ignored.",
          "complexTypes": [
            "GoogleProductChangeInfo"
          ],
          "type": "GoogleProductChangeInfo | null | undefined"
        },
        {
          "name": "storeProductChangeInfo",
          "tags": [],
          "docs": "Android only. Optional StoreProductChangeInfo you\nwish to upgrade from containing the oldProductIdentifier and the optional replacementMode.",
          "complexTypes": [
            "StoreProductChangeInfo"
          ],
          "type": "StoreProductChangeInfo | null | undefined"
        },
        {
          "name": "googleIsPersonalizedPrice",
          "tags": [],
          "docs": "Android and Google only. Optional boolean indicates personalized pricing on products available for purchase in the EU.\nFor compliance with EU regulations. User will see \"This price has been customized for you\" in the purchase dialog when true.\nSee https://developer.android.com/google/play/billing/integrate#personalized-price for more info.",
          "complexTypes": [],
          "type": "boolean | null | undefined"
        }
      ]
    },
    {
      "name": "GoogleProductChangeInfo",
      "slug": "googleproductchangeinfo",
      "docs": "Holds the information used when upgrading from another sku. For Android use only.",
      "tags": [
        {
          "text": "Use StoreProductChangeInfo",
          "name": "deprecated"
        },
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "oldProductIdentifier",
          "tags": [],
          "docs": "The old product identifier to upgrade from.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "prorationMode",
          "tags": [],
          "docs": "The [PRORATION_MODE] to use when upgrading the given oldSKU.",
          "complexTypes": [
            "PRORATION_MODE"
          ],
          "type": "PRORATION_MODE"
        }
      ]
    },
    {
      "name": "StoreProductChangeInfo",
      "slug": "storeproductchangeinfo",
      "docs": "Holds the information used when upgrading from another sku. For use on the Play Store and Galaxy Store on Android only.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "oldProductIdentifier",
          "tags": [],
          "docs": "The old product identifier to upgrade from.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "replacementMode",
          "tags": [],
          "docs": "The [STORE_REPLACEMENT_MODE] to use when upgrading the given oldSKU.",
          "complexTypes": [
            "STORE_REPLACEMENT_MODE"
          ],
          "type": "STORE_REPLACEMENT_MODE"
        }
      ]
    },
    {
      "name": "PurchaseDiscountedProductOptions",
      "slug": "purchasediscountedproductoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "product",
          "tags": [],
          "docs": "The product you want to purchase",
          "complexTypes": [
            "PurchasesStoreProduct"
          ],
          "type": "PurchasesStoreProduct"
        },
        {
          "name": "discount",
          "tags": [],
          "docs": "Discount to apply to this package. Retrieve this discount using getPromotionalOffer.",
          "complexTypes": [
            "PurchasesPromotionalOffer"
          ],
          "type": "PurchasesPromotionalOffer"
        }
      ]
    },
    {
      "name": "PurchasesPromotionalOffer",
      "slug": "purchasespromotionaloffer",
      "docs": "Holds the information about a PromotionalOffer in Apple's App Store.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "identifier",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "keyIdentifier",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "nonce",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "signature",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "timestamp",
          "tags": [],
          "docs": "",
          "complexTypes": [],
          "type": "number"
        }
      ]
    },
    {
      "name": "PurchasePackageOptions",
      "slug": "purchasepackageoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "aPackage",
          "tags": [],
          "docs": "The Package you wish to purchase. You can get the Packages by calling getOfferings",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage"
        },
        {
          "name": "googleProductChangeInfo",
          "tags": [
            {
              "text": "Use storeProductChangeInfo instead.",
              "name": "deprecated"
            }
          ],
          "docs": "Android only. Optional GoogleProductChangeInfo you\nwish to upgrade from containing the oldProductIdentifier and the optional prorationMode.\nIf both googleProductChangeInfo and storeProductChangeInfo are provided,\nstoreProductChangeInfo is used and googleProductChangeInfo is ignored.",
          "complexTypes": [
            "GoogleProductChangeInfo"
          ],
          "type": "GoogleProductChangeInfo | null | undefined"
        },
        {
          "name": "storeProductChangeInfo",
          "tags": [],
          "docs": "Android only. Optional StoreProductChangeInfo you\nwish to upgrade from containing the oldProductIdentifier and the optional replacementMode.",
          "complexTypes": [
            "StoreProductChangeInfo"
          ],
          "type": "StoreProductChangeInfo | null | undefined"
        },
        {
          "name": "googleIsPersonalizedPrice",
          "tags": [],
          "docs": "Android and Google only. Optional boolean indicates personalized pricing on products available for purchase in the EU.\nFor compliance with EU regulations. User will see \"This price has been customized for you\" in the purchase dialog when true.\nSee https://developer.android.com/google/play/billing/integrate#personalized-price for more info.",
          "complexTypes": [],
          "type": "boolean | null | undefined"
        }
      ]
    },
    {
      "name": "PurchaseSubscriptionOptionOptions",
      "slug": "purchasesubscriptionoptionoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "subscriptionOption",
          "tags": [],
          "docs": "The SubscriptionOption you wish to purchase. You can get the SubscriptionOption from StoreProducts by calling getOfferings",
          "complexTypes": [
            "SubscriptionOption"
          ],
          "type": "SubscriptionOption"
        },
        {
          "name": "googleProductChangeInfo",
          "tags": [
            {
              "text": "Use storeProductChangeInfo instead.",
              "name": "deprecated"
            }
          ],
          "docs": "Android only. Optional GoogleProductChangeInfo you\nwish to upgrade from containing the oldProductIdentifier and the optional prorationMode.\nIf both googleProductChangeInfo and storeProductChangeInfo are provided,\nstoreProductChangeInfo is used and googleProductChangeInfo is ignored.",
          "complexTypes": [
            "GoogleProductChangeInfo"
          ],
          "type": "GoogleProductChangeInfo | null | undefined"
        },
        {
          "name": "storeProductChangeInfo",
          "tags": [],
          "docs": "Android only. Optional StoreProductChangeInfo you\nwish to upgrade from containing the oldProductIdentifier and the optional replacementMode.",
          "complexTypes": [
            "StoreProductChangeInfo"
          ],
          "type": "StoreProductChangeInfo | null | undefined"
        },
        {
          "name": "googleIsPersonalizedPrice",
          "tags": [],
          "docs": "Android and Google only. Optional boolean indicates personalized pricing on products available for purchase in the EU.\nFor compliance with EU regulations. User will see \"This price has been customized for you\" in the purchase dialog when true.\nSee https://developer.android.com/google/play/billing/integrate#personalized-price for more info.",
          "complexTypes": [],
          "type": "boolean | null | undefined"
        }
      ]
    },
    {
      "name": "PurchaseDiscountedPackageOptions",
      "slug": "purchasediscountedpackageoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "aPackage",
          "tags": [],
          "docs": "The Package you wish to purchase. You can get the Packages by calling getOfferings",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage"
        },
        {
          "name": "discount",
          "tags": [],
          "docs": "Discount to apply to this package. Retrieve this discount using getPromotionalOffer.",
          "complexTypes": [
            "PurchasesPromotionalOffer"
          ],
          "type": "PurchasesPromotionalOffer"
        }
      ]
    },
    {
      "name": "Storefront",
      "slug": "storefront",
      "docs": "Contains the information about the current store account.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "countryCode",
          "tags": [],
          "docs": "Country code of the current store account.",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "LogInResult",
      "slug": "loginresult",
      "docs": "Holds the logIn result",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "customerInfo",
          "tags": [],
          "docs": "The Customer Info for the user.",
          "complexTypes": [
            "CustomerInfo"
          ],
          "type": "CustomerInfo"
        },
        {
          "name": "created",
          "tags": [],
          "docs": "True if the call resulted in a new user getting created in the RevenueCat backend.",
          "complexTypes": [],
          "type": "boolean"
        }
      ]
    },
    {
      "name": "SyncObserverModeAmazonPurchaseOptions",
      "slug": "syncobservermodeamazonpurchaseoptions",
      "docs": "",
      "tags": [
        {
          "text": "- Use SyncAmazonPurchaseOptions instead",
          "name": "deprecated"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "productID",
          "tags": [],
          "docs": "Product ID associated to the purchase.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "receiptID",
          "tags": [],
          "docs": "ReceiptId that represents the Amazon purchase.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "amazonUserID",
          "tags": [],
          "docs": "Amazon's userID. This parameter will be ignored when syncing a Google purchase.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "isoCurrencyCode",
          "tags": [],
          "docs": "Product's currency code in ISO 4217 format.",
          "complexTypes": [],
          "type": "string | null | undefined"
        },
        {
          "name": "price",
          "tags": [],
          "docs": "Product's price.",
          "complexTypes": [],
          "type": "number | null | undefined"
        }
      ]
    },
    {
      "name": "SyncAmazonPurchaseOptions",
      "slug": "syncamazonpurchaseoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "productID",
          "tags": [],
          "docs": "Product ID associated to the purchase.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "receiptID",
          "tags": [],
          "docs": "ReceiptId that represents the Amazon purchase.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "amazonUserID",
          "tags": [],
          "docs": "Amazon's userID. This parameter will be ignored when syncing a Google purchase.",
          "complexTypes": [],
          "type": "string"
        },
        {
          "name": "isoCurrencyCode",
          "tags": [],
          "docs": "Product's currency code in ISO 4217 format.",
          "complexTypes": [],
          "type": "string | null | undefined"
        },
        {
          "name": "price",
          "tags": [],
          "docs": "Product's price.",
          "complexTypes": [],
          "type": "number | null | undefined"
        },
        {
          "name": "purchaseTime",
          "tags": [],
          "docs": "Time the product was purchased, in milliseconds since the epoch. Can be obtained from Amazon's\nPurchaseResponse > Receipt > purchaseTime. Android only.",
          "complexTypes": [],
          "type": "number"
        }
      ]
    },
    {
      "name": "IntroEligibility",
      "slug": "introeligibility",
      "docs": "Holds the introductory price status",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": [
        {
          "name": "status",
          "tags": [],
          "docs": "The introductory price eligibility status",
          "complexTypes": [
            "INTRO_ELIGIBILITY_STATUS"
          ],
          "type": "INTRO_ELIGIBILITY_STATUS"
        },
        {
          "name": "description",
          "tags": [],
          "docs": "Description of the status",
          "complexTypes": [],
          "type": "string"
        }
      ]
    },
    {
      "name": "GetPromotionalOfferOptions",
      "slug": "getpromotionalofferoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "product",
          "tags": [],
          "docs": "The `PurchasesStoreProduct` the user intends to purchase.",
          "complexTypes": [
            "PurchasesStoreProduct"
          ],
          "type": "PurchasesStoreProduct"
        },
        {
          "name": "discount",
          "tags": [],
          "docs": "The `PurchasesStoreProductDiscount` to apply to the product.",
          "complexTypes": [
            "PurchasesStoreProductDiscount"
          ],
          "type": "PurchasesStoreProductDiscount"
        }
      ]
    },
    {
      "name": "PurchasesWinBackOffer",
      "slug": "purchaseswinbackoffer",
      "docs": "Holds the information about a Win-Back Offer in Apple's App Store.",
      "tags": [
        {
          "name": "public"
        }
      ],
      "methods": [],
      "properties": []
    },
    {
      "name": "GetEligibleWinBackOffersForProductOptions",
      "slug": "geteligiblewinbackoffersforproductoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "product",
          "tags": [],
          "docs": "The product you want to fetch eligible win-back offers for",
          "complexTypes": [
            "PurchasesStoreProduct"
          ],
          "type": "PurchasesStoreProduct"
        }
      ]
    },
    {
      "name": "GetEligibleWinBackOffersForPackageOptions",
      "slug": "geteligiblewinbackoffersforpackageoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "aPackage",
          "tags": [],
          "docs": "The package you want to fetch eligible win-back offers for",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage"
        }
      ]
    },
    {
      "name": "PurchaseProductWithWinBackOfferOptions",
      "slug": "purchaseproductwithwinbackofferoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "product",
          "tags": [],
          "docs": "The product you want to purchase",
          "complexTypes": [
            "PurchasesStoreProduct"
          ],
          "type": "PurchasesStoreProduct"
        },
        {
          "name": "winBackOffer",
          "tags": [],
          "docs": "Win-back offer to apply to this purchase. Retrieve this using getEligibleWinBackOffersForProduct.",
          "complexTypes": [
            "PurchasesWinBackOffer"
          ],
          "type": "PurchasesWinBackOffer"
        }
      ]
    },
    {
      "name": "PurchasePackageWithWinBackOfferOptions",
      "slug": "purchasepackagewithwinbackofferoptions",
      "docs": "",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "aPackage",
          "tags": [],
          "docs": "The package you want to purchase",
          "complexTypes": [
            "PurchasesPackage"
          ],
          "type": "PurchasesPackage"
        },
        {
          "name": "winBackOffer",
          "tags": [],
          "docs": "Win-back offer to apply to this purchase. Retrieve this using getEligibleWinBackOffersForPackage.",
          "complexTypes": [
            "PurchasesWinBackOffer"
          ],
          "type": "PurchasesWinBackOffer"
        }
      ]
    },
    {
      "name": "TrackCustomPaywallImpressionOptions",
      "slug": "trackcustompaywallimpressionoptions",
      "docs": "Options for tracking a custom paywall impression.",
      "tags": [],
      "methods": [],
      "properties": [
        {
          "name": "paywallId",
          "tags": [],
          "docs": "The identifier of the paywall that was shown.",
          "complexTypes": [],
          "type": "string | null | undefined"
        },
        {
          "name": "offering",
          "tags": [],
          "docs": "The offering associated with the custom paywall.\n\nPass the offering object so RevenueCat can track placement and targeting\ncontext for placement-resolved offerings.",
          "complexTypes": [
            "PurchasesOffering"
          ],
          "type": "PurchasesOffering | null | undefined"
        },
        {
          "name": "offeringId",
          "tags": [
            {
              "text": "Use `offering` instead.",
              "name": "deprecated"
            }
          ],
          "docs": "Deprecated. Pass `offering` instead so RevenueCat can track placement and\ntargeting context.\n\nAn optional identifier for the offering associated with the custom paywall.",
          "complexTypes": [],
          "type": "string | null | undefined"
        }
      ]
    }
  ],
  "enums": [
    {
      "name": "PURCHASES_ARE_COMPLETED_BY_TYPE",
      "slug": "purchases_are_completed_by_type",
      "members": [
        {
          "name": "MY_APP",
          "value": "\"MY_APP\"",
          "tags": [],
          "docs": "RevenueCat will **not** automatically acknowledge any purchases. You will have to do so manually.\n\n**Note:** failing to acknowledge a purchase within 3 days will lead to Google Play automatically issuing a\nrefund to the user.\n\nFor more info, see [revenuecat.com](https://docs.revenuecat.com/docs/observer-mode#option-2-client-side)."
        },
        {
          "name": "REVENUECAT",
          "value": "\"REVENUECAT\"",
          "tags": [],
          "docs": "RevenueCat will automatically acknowledge verified purchases. No action is required by you."
        }
      ]
    },
    {
      "name": "STOREKIT_VERSION",
      "slug": "storekit_version",
      "members": [
        {
          "name": "STOREKIT_1",
          "value": "\"STOREKIT_1\"",
          "tags": [],
          "docs": "Always use StoreKit 1."
        },
        {
          "name": "STOREKIT_2",
          "value": "\"STOREKIT_2\"",
          "tags": [],
          "docs": "Always use StoreKit 2 (StoreKit 1 will be used if StoreKit 2 is not available in the current device.)\n- Warning: Make sure you have an In-App Purchase Key configured in your app.\nPlease see https://rev.cat/in-app-purchase-key-configuration for more info."
        },
        {
          "name": "DEFAULT",
          "value": "\"DEFAULT\"",
          "tags": [],
          "docs": "Let RevenueCat use the most appropriate version of StoreKit"
        }
      ]
    },
    {
      "name": "ENTITLEMENT_VERIFICATION_MODE",
      "slug": "entitlement_verification_mode",
      "members": [
        {
          "name": "DISABLED",
          "value": "\"DISABLED\"",
          "tags": [],
          "docs": "The SDK will not perform any entitlement verification."
        },
        {
          "name": "INFORMATIONAL",
          "value": "\"INFORMATIONAL\"",
          "tags": [],
          "docs": "Enable entitlement verification.\n\nIf verification fails, this will be indicated with [VerificationResult.FAILED] in\nthe [EntitlementInfos.verification] and [EntitlementInfo.verification] properties but parsing will not fail\n(i.e. Entitlements will still be granted).\n\nThis can be useful if you want to handle verification failures to display an error/warning to the user\nor to track this situation but still grant access."
        }
      ]
    },
    {
      "name": "WebPurchaseRedemptionResultType",
      "slug": "webpurchaseredemptionresulttype",
      "members": [
        {
          "name": "SUCCESS",
          "value": "\"SUCCESS\"",
          "tags": [],
          "docs": "The redemption was successful."
        },
        {
          "name": "ERROR",
          "value": "\"ERROR\"",
          "tags": [],
          "docs": "The redemption failed."
        },
        {
          "name": "PURCHASE_BELONGS_TO_OTHER_USER",
          "value": "\"PURCHASE_BELONGS_TO_OTHER_USER\"",
          "tags": [],
          "docs": "The purchase associated to the link belongs to another user."
        },
        {
          "name": "INVALID_TOKEN",
          "value": "\"INVALID_TOKEN\"",
          "tags": [],
          "docs": "The token is invalid."
        },
        {
          "name": "EXPIRED",
          "value": "\"EXPIRED\"",
          "tags": [],
          "docs": "The token has expired. A new Redemption Link will be sent to the email used during purchase."
        }
      ]
    },
    {
      "name": "VERIFICATION_RESULT",
      "slug": "verification_result",
      "members": [
        {
          "name": "NOT_REQUESTED",
          "value": "\"NOT_REQUESTED\"",
          "tags": [],
          "docs": "No verification was done.\n\nThis value is returned when verification is not enabled in PurchasesConfiguration"
        },
        {
          "name": "VERIFIED",
          "value": "\"VERIFIED\"",
          "tags": [],
          "docs": "Verification with our server was performed successfully."
        },
        {
          "name": "FAILED",
          "value": "\"FAILED\"",
          "tags": [],
          "docs": "Verification failed, possibly due to a MiTM attack."
        },
        {
          "name": "VERIFIED_ON_DEVICE",
          "value": "\"VERIFIED_ON_DEVICE\"",
          "tags": [],
          "docs": "Verification was performed on device."
        }
      ]
    },
    {
      "name": "PURCHASES_ERROR_CODE",
      "slug": "purchases_error_code",
      "members": [
        {
          "name": "UNKNOWN_ERROR",
          "value": "\"0\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "PURCHASE_CANCELLED_ERROR",
          "value": "\"1\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "STORE_PROBLEM_ERROR",
          "value": "\"2\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "PURCHASE_NOT_ALLOWED_ERROR",
          "value": "\"3\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "PURCHASE_INVALID_ERROR",
          "value": "\"4\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "PRODUCT_NOT_AVAILABLE_FOR_PURCHASE_ERROR",
          "value": "\"5\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "PRODUCT_ALREADY_PURCHASED_ERROR",
          "value": "\"6\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "RECEIPT_ALREADY_IN_USE_ERROR",
          "value": "\"7\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "INVALID_RECEIPT_ERROR",
          "value": "\"8\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "MISSING_RECEIPT_FILE_ERROR",
          "value": "\"9\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "NETWORK_ERROR",
          "value": "\"10\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "INVALID_CREDENTIALS_ERROR",
          "value": "\"11\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "UNEXPECTED_BACKEND_RESPONSE_ERROR",
          "value": "\"12\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "RECEIPT_IN_USE_BY_OTHER_SUBSCRIBER_ERROR",
          "value": "\"13\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "INVALID_APP_USER_ID_ERROR",
          "value": "\"14\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "OPERATION_ALREADY_IN_PROGRESS_ERROR",
          "value": "\"15\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "UNKNOWN_BACKEND_ERROR",
          "value": "\"16\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "INVALID_APPLE_SUBSCRIPTION_KEY_ERROR",
          "value": "\"17\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "INELIGIBLE_ERROR",
          "value": "\"18\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "INSUFFICIENT_PERMISSIONS_ERROR",
          "value": "\"19\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "PAYMENT_PENDING_ERROR",
          "value": "\"20\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "INVALID_SUBSCRIBER_ATTRIBUTES_ERROR",
          "value": "\"21\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "LOG_OUT_ANONYMOUS_USER_ERROR",
          "value": "\"22\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "CONFIGURATION_ERROR",
          "value": "\"23\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "UNSUPPORTED_ERROR",
          "value": "\"24\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "EMPTY_SUBSCRIBER_ATTRIBUTES_ERROR",
          "value": "\"25\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "PRODUCT_DISCOUNT_MISSING_IDENTIFIER_ERROR",
          "value": "\"26\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "PRODUCT_DISCOUNT_MISSING_SUBSCRIPTION_GROUP_IDENTIFIER_ERROR",
          "value": "\"28\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "CUSTOMER_INFO_ERROR",
          "value": "\"29\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "SYSTEM_INFO_ERROR",
          "value": "\"30\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "BEGIN_REFUND_REQUEST_ERROR",
          "value": "\"31\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "PRODUCT_REQUEST_TIMED_OUT_ERROR",
          "value": "\"32\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "API_ENDPOINT_BLOCKED",
          "value": "\"33\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "INVALID_PROMOTIONAL_OFFER_ERROR",
          "value": "\"34\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "OFFLINE_CONNECTION_ERROR",
          "value": "\"35\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "FEATURE_NOT_AVAILABLE_IN_CUSTOM_ENTITLEMENTS_COMPUTATION_MODE",
          "value": "\"36\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "SIGNATURE_VERIFICATION_ERROR",
          "value": "\"37\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "FEATURE_NOT_SUPPORTED_WITH_STORE_KIT_1",
          "value": "\"38\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "INVALID_WEB_PURCHASE_TOKEN",
          "value": "\"39\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "PURCHASE_BELONGS_TO_OTHER_USER",
          "value": "\"40\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "EXPIRED_WEB_PURCHASE_TOKEN",
          "value": "\"41\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "TEST_STORE_SIMULATED_PURCHASE_ERROR",
          "value": "\"42\"",
          "tags": [],
          "docs": ""
        }
      ]
    },
    {
      "name": "PACKAGE_TYPE",
      "slug": "package_type",
      "members": [
        {
          "name": "UNKNOWN",
          "value": "\"UNKNOWN\"",
          "tags": [],
          "docs": "A package that was defined with a custom identifier."
        },
        {
          "name": "CUSTOM",
          "value": "\"CUSTOM\"",
          "tags": [],
          "docs": "A package that was defined with a custom identifier."
        },
        {
          "name": "LIFETIME",
          "value": "\"LIFETIME\"",
          "tags": [],
          "docs": "A package configured with the predefined lifetime identifier."
        },
        {
          "name": "ANNUAL",
          "value": "\"ANNUAL\"",
          "tags": [],
          "docs": "A package configured with the predefined annual identifier."
        },
        {
          "name": "SIX_MONTH",
          "value": "\"SIX_MONTH\"",
          "tags": [],
          "docs": "A package configured with the predefined six month identifier."
        },
        {
          "name": "THREE_MONTH",
          "value": "\"THREE_MONTH\"",
          "tags": [],
          "docs": "A package configured with the predefined three month identifier."
        },
        {
          "name": "TWO_MONTH",
          "value": "\"TWO_MONTH\"",
          "tags": [],
          "docs": "A package configured with the predefined two month identifier."
        },
        {
          "name": "MONTHLY",
          "value": "\"MONTHLY\"",
          "tags": [],
          "docs": "A package configured with the predefined monthly identifier."
        },
        {
          "name": "WEEKLY",
          "value": "\"WEEKLY\"",
          "tags": [],
          "docs": "A package configured with the predefined weekly identifier."
        }
      ]
    },
    {
      "name": "PRODUCT_CATEGORY",
      "slug": "product_category",
      "members": [
        {
          "name": "NON_SUBSCRIPTION",
          "value": "\"NON_SUBSCRIPTION\"",
          "tags": [],
          "docs": "A type of product for non-subscription."
        },
        {
          "name": "SUBSCRIPTION",
          "value": "\"SUBSCRIPTION\"",
          "tags": [],
          "docs": "A type of product for subscriptions."
        },
        {
          "name": "UNKNOWN",
          "value": "\"UNKNOWN\"",
          "tags": [],
          "docs": "A type of product for unknowns."
        }
      ]
    },
    {
      "name": "PRODUCT_TYPE",
      "slug": "product_type",
      "members": [
        {
          "name": "CONSUMABLE",
          "value": "\"CONSUMABLE\"",
          "tags": [],
          "docs": "A consumable in-app purchase."
        },
        {
          "name": "NON_CONSUMABLE",
          "value": "\"NON_CONSUMABLE\"",
          "tags": [],
          "docs": "A non-consumable in-app purchase. Only applies to Apple Store products."
        },
        {
          "name": "NON_RENEWABLE_SUBSCRIPTION",
          "value": "\"NON_RENEWABLE_SUBSCRIPTION\"",
          "tags": [],
          "docs": "A non-renewing subscription. Only applies to Apple Store products."
        },
        {
          "name": "AUTO_RENEWABLE_SUBSCRIPTION",
          "value": "\"AUTO_RENEWABLE_SUBSCRIPTION\"",
          "tags": [],
          "docs": "An auto-renewable subscription."
        },
        {
          "name": "PREPAID_SUBSCRIPTION",
          "value": "\"PREPAID_SUBSCRIPTION\"",
          "tags": [],
          "docs": "A subscription that is pre-paid. Only applies to Google Play products."
        },
        {
          "name": "UNKNOWN",
          "value": "\"UNKNOWN\"",
          "tags": [],
          "docs": "Unable to determine product type."
        }
      ]
    },
    {
      "name": "PERIOD_UNIT",
      "slug": "period_unit",
      "members": [
        {
          "name": "DAY",
          "value": "\"DAY\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "WEEK",
          "value": "\"WEEK\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "MONTH",
          "value": "\"MONTH\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "YEAR",
          "value": "\"YEAR\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "UNKNOWN",
          "value": "\"UNKNOWN\"",
          "tags": [],
          "docs": ""
        }
      ]
    },
    {
      "name": "RECURRENCE_MODE",
      "slug": "recurrence_mode",
      "members": [
        {
          "name": "INFINITE_RECURRING",
          "value": "1",
          "tags": [],
          "docs": "Pricing phase repeats infinitely until cancellation"
        },
        {
          "name": "FINITE_RECURRING",
          "value": "2",
          "tags": [],
          "docs": "Pricing phase repeats for a fixed number of billing periods"
        },
        {
          "name": "NON_RECURRING",
          "value": "3",
          "tags": [],
          "docs": "Pricing phase does not repeat"
        }
      ]
    },
    {
      "name": "OFFER_PAYMENT_MODE",
      "slug": "offer_payment_mode",
      "members": [
        {
          "name": "FREE_TRIAL",
          "value": "\"FREE_TRIAL\"",
          "tags": [],
          "docs": "Subscribers don't pay until the specified period ends"
        },
        {
          "name": "SINGLE_PAYMENT",
          "value": "\"SINGLE_PAYMENT\"",
          "tags": [],
          "docs": "Subscribers pay up front for a specified period"
        },
        {
          "name": "DISCOUNTED_RECURRING_PAYMENT",
          "value": "\"DISCOUNTED_RECURRING_PAYMENT\"",
          "tags": [],
          "docs": "Subscribers pay a discounted amount for a specified number of periods"
        }
      ]
    },
    {
      "name": "BILLING_PLAN_TYPE",
      "slug": "billing_plan_type",
      "members": [
        {
          "name": "UP_FRONT",
          "value": "\"UP_FRONT\"",
          "tags": [],
          "docs": "The customer pays in full when purchasing the product."
        },
        {
          "name": "MONTHLY",
          "value": "\"MONTHLY\"",
          "tags": [],
          "docs": "The customer pays in monthly installments."
        },
        {
          "name": "UNKNOWN",
          "value": "\"UNKNOWN\"",
          "tags": [],
          "docs": "Unable to determine the billing plan type."
        }
      ]
    },
    {
      "name": "PRORATION_MODE",
      "slug": "proration_mode",
      "members": [
        {
          "name": "UNKNOWN_SUBSCRIPTION_UPGRADE_DOWNGRADE_POLICY",
          "value": "0",
          "tags": [],
          "docs": ""
        },
        {
          "name": "IMMEDIATE_WITH_TIME_PRORATION",
          "value": "1",
          "tags": [],
          "docs": "Replacement takes effect immediately, and the remaining time will be\nprorated and credited to the user."
        },
        {
          "name": "IMMEDIATE_AND_CHARGE_PRORATED_PRICE",
          "value": "2",
          "tags": [],
          "docs": "Replacement takes effect immediately, and the billing cycle remains the\nsame. The price for the remaining period will be charged. This option is\nonly available for subscription upgrade."
        },
        {
          "name": "IMMEDIATE_WITHOUT_PRORATION",
          "value": "3",
          "tags": [],
          "docs": "Replacement takes effect immediately, and the new price will be charged on\nnext recurrence time. The billing cycle stays the same.\n\nThis is the current default behavior."
        },
        {
          "name": "DEFERRED",
          "value": "6",
          "tags": [],
          "docs": "Replacement takes effect when the old plan expires, and the new price will\nbe charged at the same time."
        },
        {
          "name": "IMMEDIATE_AND_CHARGE_FULL_PRICE",
          "value": "5",
          "tags": [],
          "docs": "Replacement takes effect immediately, and the user is charged full price\nof new plan and is given a full billing cycle of subscription,\nplus remaining prorated time from the old plan."
        }
      ]
    },
    {
      "name": "STORE_REPLACEMENT_MODE",
      "slug": "store_replacement_mode",
      "members": [
        {
          "name": "WITHOUT_PRORATION",
          "value": "\"WITHOUT_PRORATION\"",
          "tags": [],
          "docs": "Old subscription is cancelled, and new subscription takes effect immediately.\nUser is charged for the full price of the new subscription on the old subscription's expiration date.\n\nThis is the default behavior for the Galaxy and Play stores."
        },
        {
          "name": "WITH_TIME_PRORATION",
          "value": "\"WITH_TIME_PRORATION\"",
          "tags": [],
          "docs": "Replacement takes effect immediately, and the remaining time will be\nprorated and credited to the user. This is the current default behavior."
        },
        {
          "name": "CHARGE_FULL_PRICE",
          "value": "\"CHARGE_FULL_PRICE\"",
          "tags": [],
          "docs": "Replacement takes effect immediately, and the user is charged full price of new plan and is\ngiven a full billing cycle of subscription, plus remaining prorated time from the old plan.\n\nThis mode is not supported by the Galaxy Store. If it is passed to the Galaxy Store, an error will be thrown."
        },
        {
          "name": "CHARGE_PRORATED_PRICE",
          "value": "\"CHARGE_PRORATED_PRICE\"",
          "tags": [],
          "docs": "Replacement takes effect immediately, and the billing cycle remains the\nsame. The price for the remaining period will be charged. This option is\nonly available for subscription upgrade."
        },
        {
          "name": "DEFERRED",
          "value": "\"DEFERRED\"",
          "tags": [],
          "docs": "Replacement takes effect when the old plan expires, and the new price will be charged at the same time."
        }
      ]
    },
    {
      "name": "LOG_LEVEL",
      "slug": "log_level",
      "members": [
        {
          "name": "VERBOSE",
          "value": "\"VERBOSE\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "DEBUG",
          "value": "\"DEBUG\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "INFO",
          "value": "\"INFO\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "WARN",
          "value": "\"WARN\"",
          "tags": [],
          "docs": ""
        },
        {
          "name": "ERROR",
          "value": "\"ERROR\"",
          "tags": [],
          "docs": ""
        }
      ]
    },
    {
      "name": "INTRO_ELIGIBILITY_STATUS",
      "slug": "intro_eligibility_status",
      "members": [
        {
          "name": "INTRO_ELIGIBILITY_STATUS_UNKNOWN",
          "value": "0",
          "tags": [],
          "docs": "RevenueCat doesn't have enough information to determine eligibility."
        },
        {
          "name": "INTRO_ELIGIBILITY_STATUS_INELIGIBLE",
          "value": "1",
          "tags": [],
          "docs": "The user is not eligible for a free trial or intro pricing for this product."
        },
        {
          "name": "INTRO_ELIGIBILITY_STATUS_ELIGIBLE",
          "value": "2",
          "tags": [],
          "docs": "The user is eligible for a free trial or intro pricing for this product."
        },
        {
          "name": "INTRO_ELIGIBILITY_STATUS_NO_INTRO_OFFER_EXISTS",
          "value": "3",
          "tags": [],
          "docs": "There is no free trial or intro pricing for this product."
        }
      ]
    },
    {
      "name": "BILLING_FEATURE",
      "slug": "billing_feature",
      "members": [
        {
          "name": "SUBSCRIPTIONS",
          "value": "0",
          "tags": [],
          "docs": "Purchase/query for subscriptions."
        },
        {
          "name": "SUBSCRIPTIONS_UPDATE",
          "value": "1",
          "tags": [],
          "docs": "Subscriptions update/replace."
        },
        {
          "name": "IN_APP_ITEMS_ON_VR",
          "value": "2",
          "tags": [],
          "docs": "Purchase/query for in-app items on VR."
        },
        {
          "name": "SUBSCRIPTIONS_ON_VR",
          "value": "3",
          "tags": [],
          "docs": "Purchase/query for subscriptions on VR."
        },
        {
          "name": "PRICE_CHANGE_CONFIRMATION",
          "value": "4",
          "tags": [],
          "docs": "Launch a price change confirmation flow."
        }
      ]
    },
    {
      "name": "REFUND_REQUEST_STATUS",
      "slug": "refund_request_status",
      "members": [
        {
          "name": "SUCCESS",
          "value": "0",
          "tags": [],
          "docs": "Apple has received the refund request."
        },
        {
          "name": "USER_CANCELLED",
          "value": "1",
          "tags": [],
          "docs": "User canceled submission of the refund request."
        },
        {
          "name": "ERROR",
          "value": "2",
          "tags": [],
          "docs": "There was an error with the request. See message for more details."
        }
      ]
    },
    {
      "name": "IN_APP_MESSAGE_TYPE",
      "slug": "in_app_message_type",
      "members": [
        {
          "name": "BILLING_ISSUE",
          "value": "0",
          "tags": [],
          "docs": "In-app messages to indicate there has been a billing issue charging the user."
        },
        {
          "name": "PRICE_INCREASE_CONSENT",
          "value": "1",
          "tags": [],
          "docs": "iOS-only. This message will show if you increase the price of a subscription and\nthe user needs to opt-in to the increase."
        },
        {
          "name": "GENERIC",
          "value": "2",
          "tags": [],
          "docs": "iOS-only. StoreKit generic messages."
        },
        {
          "name": "WIN_BACK_OFFER",
          "value": "3",
          "tags": [],
          "docs": "iOS-only. This message will show if the subscriber is eligible for an iOS win-back\noffer and will allow the subscriber to redeem the offer."
        }
      ]
    }
  ],
  "typeAliases": [
    {
      "name": "PurchasesAreCompletedBy",
      "slug": "purchasesarecompletedby",
      "docs": "Allows you to specify whether you want RevenueCat to complete your app's purchases\nor if your app will do so.\n\nYou can configure RevenueCat to complete your purchases like so:\n```typescript\nPurchases.configure({\n apiKey: \"123\",\n purchasesAreCompletedBy: PURCHASES_ARE_COMPLETED_BY.REVENUECAT,\n});\n```\n\nYou can specify that purchase are completed by your app like so:\n```typescript\nPurchases.configure({\n apiKey: \"123\",\n purchasesAreCompletedBy: {\n   type: PURCHASES_ARE_COMPLETED_BY.MY_APP,\n   storeKitVersion: STOREKIT_VERSION.STOREKIT_1\n },\n});\n```",
      "types": [
        {
          "text": "PURCHASES_ARE_COMPLETED_BY_TYPE.REVENUECAT",
          "complexTypes": [
            "PURCHASES_ARE_COMPLETED_BY_TYPE"
          ]
        },
        {
          "text": "PurchasesAreCompletedByMyApp",
          "complexTypes": [
            "PurchasesAreCompletedByMyApp"
          ]
        }
      ]
    },
    {
      "name": "PurchasesAreCompletedByMyApp",
      "slug": "purchasesarecompletedbymyapp",
      "docs": "Configuration option that specifies that your app will complete purchases.",
      "types": [
        {
          "text": "{\n    type: PURCHASES_ARE_COMPLETED_BY_TYPE.MY_APP;\n    /**\n     * The version of StoreKit that your app is using to make purchases. This value is ignored\n     * on Android, so if your app is Android-only, you may provide any value.\n     */\n    storeKitVersion: STOREKIT_VERSION;\n}",
          "complexTypes": [
            "PURCHASES_ARE_COMPLETED_BY_TYPE",
            "STOREKIT_VERSION"
          ]
        }
      ]
    },
    {
      "name": "WebPurchaseRedemption",
      "slug": "webpurchaseredemption",
      "docs": "An object containing the redemption link to be redeemed.",
      "types": [
        {
          "text": "{\n    /**\n     * The redemption link to be redeemed.\n     */\n    redemptionLink: string;\n}",
          "complexTypes": []
        }
      ]
    },
    {
      "name": "WebPurchaseRedemptionResult",
      "slug": "webpurchaseredemptionresult",
      "docs": "The result of a redemption attempt.",
      "types": [
        {
          "text": "{\n    result: WebPurchaseRedemptionResultType.SUCCESS;\n    customerInfo: CustomerInfo;\n}",
          "complexTypes": [
            "WebPurchaseRedemptionResultType",
            "CustomerInfo"
          ]
        },
        {
          "text": "{\n    result: WebPurchaseRedemptionResultType.ERROR;\n    error: PurchasesError;\n}",
          "complexTypes": [
            "WebPurchaseRedemptionResultType",
            "PurchasesError"
          ]
        },
        {
          "text": "{\n    result: WebPurchaseRedemptionResultType.PURCHASE_BELONGS_TO_OTHER_USER;\n}",
          "complexTypes": [
            "WebPurchaseRedemptionResultType"
          ]
        },
        {
          "text": "{\n    result: WebPurchaseRedemptionResultType.INVALID_TOKEN;\n}",
          "complexTypes": [
            "WebPurchaseRedemptionResultType"
          ]
        },
        {
          "text": "{\n    result: WebPurchaseRedemptionResultType.EXPIRED;\n    obfuscatedEmail: string;\n}",
          "complexTypes": [
            "WebPurchaseRedemptionResultType"
          ]
        }
      ]
    },
    {
      "name": "PeriodType",
      "slug": "periodtype",
      "docs": "The supported period types for an entitlement.",
      "types": [
        {
          "text": "\"NORMAL\"",
          "complexTypes": []
        },
        {
          "text": "\"INTRO\"",
          "complexTypes": []
        },
        {
          "text": "\"TRIAL\"",
          "complexTypes": []
        },
        {
          "text": "\"PREPAID\"",
          "complexTypes": []
        }
      ]
    },
    {
      "name": "Store",
      "slug": "store",
      "docs": "The supported stores for purchases.",
      "types": [
        {
          "text": "\"PLAY_STORE\"",
          "complexTypes": []
        },
        {
          "text": "\"APP_STORE\"",
          "complexTypes": []
        },
        {
          "text": "\"STRIPE\"",
          "complexTypes": []
        },
        {
          "text": "\"MAC_APP_STORE\"",
          "complexTypes": []
        },
        {
          "text": "\"PROMOTIONAL\"",
          "complexTypes": []
        },
        {
          "text": "\"AMAZON\"",
          "complexTypes": []
        },
        {
          "text": "\"RC_BILLING\"",
          "complexTypes": []
        },
        {
          "text": "\"EXTERNAL\"",
          "complexTypes": []
        },
        {
          "text": "\"PADDLE\"",
          "complexTypes": []
        },
        {
          "text": "\"TEST_STORE\"",
          "complexTypes": []
        },
        {
          "text": "\"GALAXY\"",
          "complexTypes": []
        },
        {
          "text": "\"UNKNOWN_STORE\"",
          "complexTypes": []
        }
      ]
    },
    {
      "name": "OwnershipType",
      "slug": "ownershiptype",
      "docs": "The supported ownership types for an entitlement.",
      "types": [
        {
          "text": "\"PURCHASED\"",
          "complexTypes": []
        },
        {
          "text": "\"FAMILY_SHARED\"",
          "complexTypes": []
        },
        {
          "text": "\"ASSIGNED\"",
          "complexTypes": []
        },
        {
          "text": "\"UNKNOWN\"",
          "complexTypes": []
        }
      ]
    },
    {
      "name": "CustomerInfoUpdateListener",
      "slug": "customerinfoupdatelistener",
      "docs": "Listener used on updated customer info",
      "types": [
        {
          "text": "(customerInfo: CustomerInfo): void",
          "complexTypes": [
            "CustomerInfo"
          ]
        }
      ]
    },
    {
      "name": "PurchasesCallbackId",
      "slug": "purchasescallbackid",
      "docs": "",
      "types": [
        {
          "text": "string",
          "complexTypes": []
        }
      ]
    },
    {
      "name": "MakePurchaseResult",
      "slug": "makepurchaseresult",
      "docs": "Result of a successful purchase",
      "types": [
        {
          "text": "{\n    /**\n     * The product identifier of the purchased product\n     */\n    productIdentifier: string;\n    /**\n     * The Customer Info for the user.\n     */\n    customerInfo: CustomerInfo;\n    /**\n     * The transaction object for the purchase\n     */\n    transaction: PurchasesStoreTransaction;\n}",
          "complexTypes": [
            "CustomerInfo",
            "PurchasesStoreTransaction"
          ]
        }
      ]
    },
    {
      "name": "LogHandler",
      "slug": "loghandler",
      "docs": "Listener used to receive log messages from the SDK.",
      "types": [
        {
          "text": "(logLevel: LOG_LEVEL, message: string): void",
          "complexTypes": [
            "LOG_LEVEL"
          ]
        }
      ]
    }
  ],
  "pluginConfigs": []
}